моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
— это решение для упрощения пользовательского интерфейса и сопоставления данных.
Раньше, когда интерфейсная и серверная части не были разделены, сервер отвечал полным HTML-кодом, включая все данные, необходимые для страницы.Браузер отвечает только за отображение страницы, а весь процессСерверный рендеринг。
Процесс обработки на стороне сервера: обрабатывает запрос, встраивает необходимые данные в HTML, а затем возвращает их в браузер.
Чтобы уменьшить сложность этого процесса, существует МВК модель.
Часть причин разделения фронт- и бэк-энда,
В шаблоне MVC модель данных собирается на уровне представления для создания окончательного HTML-кода, который становится все более и более сложным.
Поэтому я хочу напрямую возвращать данные во внешний интерфейс и оставить логику сборки данных для отображения во внешнем интерфейсе.
интерфейсная платформа Вью、Реагировать решеноДанные -> Просмотрпроблема, но контроллер намного сложнее сервера.
1. Интерфейсный контроллер фактически обрабатывает операции пользователя, сценарии операций сложны, и существует слишком много ситуаций, когда данные изменяются.
1. Разные компоненты выполняют разные операции и ответы, и каждый обработчик событий делает что-то свое.
2. Например, серверу нужно только знать, вызывается ли определенный интерфейс, а логику обрабатывает контроллер.
Может существовать несколько сценариев, в которых внешний интерфейс запускает вызывающий интерфейс: запуск по нажатию кнопки, запуск по таймеру или запуск после выполнения другой логики.
2. Интерфейсная платформа использует односторонний поток данных. При совместном использовании данных данные могут быть переданы только в компонент верхнего уровня и переданы слой за слоем, что является относительно громоздким.
Итак, контекст(React.createContext
/ prvide/inject
) для предоставления общих данных. Но все же есть некоторые недостатки, особенно для средних и крупных приложений.
Наибольшее историческое значение решения по работе с данными, предложенного FaceBook, заключается в внедрении action
концепция.
action
объект, используемый для описания того, что должно быть сделано,это единственная причина, которая вызывает изменение данных。store
Представляет хранилище данных (глобальный одноэлементный режим) для хранения общих данных.будет зависеть от разныхaction
Измените данные на складе.// 示例
cosnt loginAction = {
type: "login",
payload: {
loginId:"admin",
loginPwd:"123123"
}
}
const deleteAction = {
type: "delete",
payload: 1 // 用户id为1
}
существовать Флекс введено на основеreducer
, используется в соответствии с action
Для обработки данных обработанные данные будут пересохранены складом.
Сравнивая процесс MVC на стороне сервера,
action
Эквивалентно запуску запроса,reducer
Эквивалент контроллера.
Сравнение с vuex:
Редукс | Вьюекс |
---|---|
Магазин | Магазин |
Редуктор | Мутация |
Действие | Действие |
Простота в использовании:
import { createStore } from "redux";
function reducer(state, action) {
console.log(action.payload);
if (action.type === "add") {
return state + 1;
} else if (action.type === "minus") {
return state - 1;
}
return state;
}
const store = createStore(reducer, 10);
// 分发 action
store.dispatch({ type: "add", payload: "附加的数据" });
// 获取最新的 store
console.log(store.getState());
В сравнении Вьюекс:
const store = createStore({
state: {
count: 0
},
mutations: {
increment (state, { amount }) {
state.count += amount
}
},
actions: {
increment ({ commit }, payload) {
// 触发 mutation
commit('increment', payload)
}
}
})
// 分发 action
store.dispatch('increment', {
amount: 10
})
// 以对象形式分发
store.dispatch({
type: 'increment',
amount: 10
})
выше.