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

时间:2016-08-27 03:26:59

标签: javascript reactjs redux react-redux

我不理解ownProps在docs中的工作方式,请帮我澄清以下内容:

  1.   

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

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

    1.   

      每当组件时,都会重新调用mapStateToProps   收到新的道具

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

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

      示例:

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

1 个答案:

答案 0 :(得分:0)

  1. 即使您不指定ownProps作为参数,Todo也可以访问传递的道具。 ownProps适用于第二个问题中描述的情况。
  2. 如果只有在组件当前name prop具有相同名称时才需要填充数据属性,那么这个小代码修改如何:

    function mapStateToProps(state, ownProps) {
      return { 
        ...ownProps, 
        data: state.otherSlice.name === ownProps.name ? state.data : null 
      }
    }
    
  3. 您提供的文档页面底部还有几个样本。