[英]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.