当另一个组件发生更改时,React重新渲染组件

时间:2015-11-24 10:46:08

标签: javascript reactjs

我有两个React源文件,ABA,在其渲染方法中,像这样调用B

{this.state.classificationSelected
      ?
      <div>
      <B classification={this.props.categories[this.state.categoryIndex].classes[this.state.classificationIndex]} ref="B"/>
      </div>
      :
      null
    }

如果选择了B的{​​{1}}组件,则会呈现Classification

A中,我有以下方法根据A B计算某些值:

Classification

目前,我正在使用B&#39 getSingleChoiceAttributes: function() { var singleChoiceAttributes = []; for(let attribute of this.props.classification.attributes){ if(attribute.attributeType == 'SingleChoice') { singleChoiceAttributes.push(attribute); } } return singleChoiceAttributes; }, 方法调用此方法。

我希望每次更改ComponentWillMount分类时执行此方法。但是,现在只有在首次选择A分类时才会调用它。

如何更改A getSingleChoiceAttributes A(由Classification表示)更改后的this.state.classificationIndex方法更改?

1 个答案:

答案 0 :(得分:2)

使用componentWillReceiveProps

void componentWillReceiveProps(
  object nextProps
)
  

组件接收新道具时调用。这种方法不是   要求初始渲染。

     

以此为契机,对之前的道具过渡作出反应   通过使用this.setState()更新状态来调用render()。该   可以通过this.props访问旧道具。调用this.setState()   在此函数中不会触发额外的渲染。