Rudx-thunk отлично поработал для отправки асинхронных действий, в конечном итоге он изменит состояние, выбранное в асинхронном действии. Но как мне узнать момент, когда он, наконец, изменит состояние редукции?В регрессивно-интерактивном веб-приложении, как узнать одно действие асинхронного действия, наконец отправлено в состояние
В моем случае я хочу прочитать конфигурацию с сервера, потому что для этого нужны компоненты, поэтому мне нужно отобразить все приложение после того, как будет извлечена конфигурация. Но до сих пор я не могу сработать, используя сокращающий или любой другой редукционный асинхронный инструмент.
Обновление # 1 показывает некоторый код, чтобы выразить себя лучше.
// reducer
(state, action) => Object.assign({}, state, {config: action.config});
// action creator
const fetchConfig =() => (dispatch) => {
fetch('http://server.com/...')
.then(config=>dispatch({type: 'LOAD_CONFIG', config}))
}
// connect reducer to state
createStore({config: configReducer})
// render
import { render } from 'react-dom';
render (<App><News /></App>)
// some component consume state.config
@connect(state=>{config: state.config})
const News = props=>(
<div>
{(props.config === '...')? <div>...</div> : <div>...</div>}
</div>
)
выше выглядит хорошо, однако из-за действия может занять некоторое время и обновление состояния после того, как компонент первой визуализации, поэтому компонент может отображать неожиданные результаты. То, что я действительно хочу сделать, это (я просто записать рендер часть, другие должны быть одинаковыми):
// render
loadConfigFinished
.then(()=> render((<App><News /></App>)))
Или
// render
on('loadConfigFinished',()=> render((<App><News /></App>)));
Вероятно, я должен сделать 2-й путь, просто боюсь его не является редукцией-у.
Как бы то ни было, приведенный выше пример - это пример, который иногда нам нужно уведомлять, когда какое-либо действие, наконец, отправляется в состояние redux.
Smart. Но я просто волнуюсь, что я должен поместить логику в каждый компонент, используя конфигурацию. – Ron
Да, это общий танец с использованием React/Redux: как я могу пройти как можно меньше, насколько это возможно, так как все проходит мимо? ... Если config настолько вездесущ, вы можете захотеть включить эти значения на сервере или выполнить рендеринг на стороне сервера. – pfkurtz
Я добрый думаю, что redux-thunk - это решение для асинхронных действий, поскольку это в основном модель согласованности. Я не знаю, когда это произойдет, но иногда этот момент имеет важное значение. когда приходит к порядку инициализации. – Ron