0

将不是来自商店的属性包含在 中是否是个好主意mapStateToProps

例如

const fooBar = () => 'foobar!'

const mapStateToProps = (state) => {
  return {
    todos: getVisibleTodos(state.todos, state.visibilityFilter),
    fooBar
  }
}
4

1 回答 1

2

是的,这是一个可以接受的用例——但是,我们也许可以更简洁地实现这个功能。例如,mapStateToPropsinreact-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
  }
}
于 2016-03-08T20:12:28.803 回答