[英]How to fetch initial data with react-redux connect
我在这里阅读文档https://github.com/reactjs/react-redux/blob/master/docs/api.md
我想尽可能多地使用无状态组件,但我无法弄清楚我将如何处理初始数据有效负载。 使用Stateful React组件,My容器和组件将显示:
// Container
const mapDispatchToProps = (dispatch) {
return {
fetchData: () => dispatch(fetchDataAction());
}
}
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);
// Component
class MyComponent extends React.Component {
componentDidMount() {
this.props.fetchData();
}
}
如果我使组件无状态, componentDidMount
的逻辑会在哪里?
我已经看过一些示例,他们建议您使用有状态的React在容器中扩展无状态组件,并在那里添加该逻辑:
// Container
class MyComponentContainer extends MyComponent {
componentDidMount() {
this.props.fetchData();
}
}
export default connect(mapStateToProps, mapDispatchToProps)(MyComponentContainer);
但这是最好的方法吗? 如果我很想创建一个有状态反应,为什么不直接在MyComponent
上做呢?
编辑只是为了清楚; 我问我是否可以基本上加载我的初始数据,而无需在任何地方创建React.Component
。
你可以在mapDispatchToProps中调度一个动作,但它是一种肮脏的方式,根本不推荐。
const mapDispatchToProps = (dispatch) {
dispatch(fetchDataAction());
return {
}
}
但是现在mapDispatchToProps不会是纯粹的副作用。 正确的解决方案是拥有一个容器组件,它将是有状态的React组件,并在Mount上调度该操作。
另一种解决方案是,如果您正在使用react-redux-router
那么:
请参阅: mapDispatchToProps应该调度初始化操作吗?
Eidt:类似的问题如何在加载路由时从无状态组件调度Redux操作?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.