Академический Документы
Профессиональный Документы
Культура Документы
Redux продвинутый
Redux продвинутый
— Каждый раз функция возвращает одинаковый результат, когда она вызывается с тем же
набором аргументов
Три принципа
Redux может быть описан тремя фундаментальными принципами:
console.log(store.getState())
{
visibilityFilter: 'SHOW_ALL',
todos: [
{
text: 'Consider using Redux',
completed: true,
},
{
text: 'Keep all state in a single tree',
completed: false
}
]
}
Состояние только для чтения
Единственный способ изменить состояние — это применить экшен —
объект, который описывает, что случится.
Это гарантирует, что представления или функции, реагирующие на события сети
(network callbacks), никогда не изменят состояние напрямую.
store.dispatch({
type: 'COMPLETE_TODO',
index: 1
})
store.dispatch({
type: 'SET_VISIBILITY_FILTER',
filter: 'SHOW_COMPLETED'
})
Асинхронный поток
Без мидлвара (middleware) Redux стор поддерживает только синхронный поток
данных. Это то, что вы получаете по умолчанию с createStore().
Асинхронный мидлвар, типа redux-thunk или redux-promise, оборачивает метод
стора dispatch() и позволяет вам вызывать что-то, что не является экшеном,
например, функции или Промисы. Любые мидлвары, которые вы используете, могут
интерпретировать все, что вы вызываете, и, в свою очередь, могут передать экшены
следующему мидлвару в цепочке. Например, мидлвар промисов (Promise middleware)
может перехватывать промисы и отправлять пару начало/конец экшенов асинхронно в
ответ на каждый промис.
Mидлвар (Middleware)
Они предоставляют стороннюю точку расширения, между отправкой экшена и
моментом, когда этот экшен достигает редюсера. Люди используют Redux-
мидлвары для логирования, сообщения об ошибках, общения с асинхронным API,
роутинга и т.д.