我想在渲染组件之前调度一个动作。但是该动作是与 redux-saga 集成的异步动作。
我必须知道异步操作何时完成,如果完成,则渲染组件。为了完成这项工作,我为每个容器设置了一个唯一的 ID,并且在操作完成后,属性 { loaded: true } 将被保存到存储中。
我正在考虑这种方式
@preload('uniqueId', (dispatch) => new Promise((resolve, reject) => {
dispatch(MyAction(resolve, reject));
})
@connect(....)
class MyComponent extends React.Component {
....
}
@preload
componenWillMount
是一个函数在(对于服务器端)或(对于客户端)触发指定的动作componenDidMount
,当动作调用时resolve()
,state.preloadState.uniqueId.loaded
将设置为true
。它还包装组件,以便仅在state.preloadState.uniqueId.loaded === true
.
@connect
在指定的操作中将我想要预加载的数据连接到 redux 存储中。
我想知道为 redux、redux-saga 应用程序和服务器端渲染进行数据预加载是否是常见的做法(我之前使用过 redux-async-connect,但我想让所有嵌套组件都能够进行数据预加载所以我绑定到 componentWillMount 而不是一些静态函数)。