Wor*_*sor 1 state reactjs redux
我的根组件呈现如下内容:
<Provider store={store}>
  <IntlProvider locale="en" messages={this.state.messages}>
    <Router>
      <App>
        // routes
      </App>
    </Router>
  </IntlProvider>
</Provider>
我this.state.messages从后端动态获取(异步、Redux 操作 + 减速器)作为对象。我将其存储在 Redux 存储中。我如何将 Redux 存储传递messages给this.state.messages(props也可以)。
情节扭曲:我不能对connect这个组件使用react-redux,因为它是根组件并且不在其中<Provider>(它引入了它),所以,这样做:
const mapStateToProps = state => {
  return {
    messages: state.messages
  }
}
export default connect(mapStateToProps)(RootComponent);
结束于:
Uncaught Error: Could not find "store" in either the context or props of "Connect(RootComponent)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(RootComponent)".
有没有一种方法可以以不同的、理智的方式访问 Redux 存储?我正在考虑 store.getState() 但它不接受任何参数,并且当我只想获取其中一个状态项时,映射所有状态项似乎有点矫枉过正。或者也许我做错了什么,毕竟connect应该在这里工作?
您可以创建一个连接的反应组件来包装 IntlProvider,并向其传递消息。
示例代码(未测试):
const ConnectedIntlProvider = ({ children, ...props }) => ( // the props contain the messages and the locale
  <IntlProvider locale="en" { ...props }>
  { children }
  </IntlProvider>
);
const mapStateToProps = state => ({
  messages: state.messages
});
export default connect(mapStateToProps)(ConnectedIntlProvider);
用途:
<Provider store={store}>
  <ConnectedIntlProvider locale="en">
    <Router>
      <App>
        // routes
      </App>
    </Router>
  </ConnectedIntlProvider>
</Provider>
| 归档时间: | 
 | 
| 查看次数: | 1486 次 | 
| 最近记录: |