【发布时间】:2018-01-24 17:26:24
【问题描述】:
我的 React 和 Redux 应用程序中有一个容器组件:
import { connect } from 'react-redux'
import MyComponent from '../components/mycomponent'
const mapStateToProps = state => ({
myData: state.myData[state.activeDataId]
})
export default connect(mapStateToProps)(MyComponent)
如果state.myData[state.activeDataId] 不存在,那么我想向fetchMyData 或fetchMyDataIfNeeded 发送一个操作。
请注意,目前,我的容器不包含任何 JSX,它只是将 props 转发到一个展示组件。我有 seen this being called a 'Pure Container' 虽然我不确定这是否是一个常用术语。
是否存在从纯容器调度操作的通用模式?我想没有:
- 期望演示组件通过向其传递 onLoad 事件来担心此逻辑
- 使容器成为 React.Component 并通过 componentDidMount 触发
从 mapStateToProps、mapDispatchToProps 或 mergeProps 调度操作是不是一个坏主意?
【问题讨论】:
-
在你的容器方法中调度动作是一个坏主意,这似乎是一种常见的做法,要么在你的子组件的
component*函数中执行它,因为connectHOC 通过dispatch函数到this.props中的子组件。
标签: reactjs redux containers react-redux