首页 文章

如何在mapStateToProps中引用连接(容器)组件的道具?

提问于
浏览
0

我不了解ownProps在docs中是如何工作的,请帮我澄清以下内容:

  • 如果将ownProps指定为第二个参数,则其值将是传递给组件的props

如果我有3个组件 - 1. todoList,todo和connectedTodo( =connect(mapStateToProps, mapDispatchToProps, ownProps)(todo) ,并且todolist渲染了很多connectedTodos并将道具传递给他们,这是否意味着,todo可以访问从todolist传下来的道具?如果我没有't specify ownProps, then todo WON' T有权访问传递给connectedTodo的道具吗?

  • 只要组件收到新的道具,就会再次调用mapStateToProps

这是否意味着每当todoList将新道具传递给connectedTodo时,除了订阅状态发生变化之外,还会调用它的mapStateToProps?

如果我想在 mapStateToProps 中做一些逻辑并想要引用connectedTodo的道具,我可以只使用 this.props 吗?

例:

const mapStateToProps = function (state) {
  data: state.otherSlice.name === this.props.name ? state.data: null
}

1 回答

  • 0
    • 即使您不指定 ownProps 作为参数,Todo也可以访问传递的道具 . ownProps 适合在第二个问题中描述的情况下使用 .

    • 如果只有在组件当前 name prop具有相同名称时才需要填充数据属性,那么这个小代码修改如何:

    function mapStateToProps(state, ownProps) {
      return { 
        ...ownProps, 
        data: state.otherSlice.name === ownProps.name ? state.data : null 
      }
    }
    

    您提供的文档页面底部还有几个示例 .

相关问题