将不是来自商店的属性包含在 中是否是个好主意mapStateToProps
?
例如
const fooBar = () => 'foobar!'
const mapStateToProps = (state) => {
return {
todos: getVisibleTodos(state.todos, state.visibilityFilter),
fooBar
}
}
将不是来自商店的属性包含在 中是否是个好主意mapStateToProps
?
例如
const fooBar = () => 'foobar!'
const mapStateToProps = (state) => {
return {
todos: getVisibleTodos(state.todos, state.visibilityFilter),
fooBar
}
}
是的,这是一个可以接受的用例——但是,我们也许可以更简洁地实现这个功能。例如,mapStateToProps
inreact-redux
接受第二个参数,titled ownProps
,它是传递给相关容器组件的道具:
通过https://github.com/reactjs/react-redux/blob/master/docs/api.md
[mapStateToProps(state, [ownProps]): stateProps]
(Function) : ...如果将 ownProps 指定为第二个参数,它的值将是传递给组件的 props,并且每当组件接收到新的 props 时都会重新调用 mapStateToProps。
因此,也许与其fooBar
在容器组件内部实例化,不如将它作为道具传递给组件本身,然后通过ownProps
?
其他一些组件
<MyContainer fooBar={() => alert('foobar!')}
我的容器
const mapStateToProps = (state, ownProps) => {
return {
todos: getVisibleTodos(state.todos, state.visibilityFilter),
fooBar: ownProps.fooBar
}
}