React不会从状态重映射数组

时间:2016-08-10 00:42:12

标签: javascript reactjs

基本上我们有列表组件,如下所示:

{this.state.answers[0] ? this.state.answers.map(answer =>
<li key={answer._id}>{answer.text}</li>) : null}

当我更新状态组件重新渲染但是映射列表保持不变,即使在this.state新的,不同的数据,列表使用旧数据。 那是某种虫子还是什么?为什么列表在重新渲染之后不会在更新状态后重新映射?

1 个答案:

答案 0 :(得分:0)

我将映射元素移动到使用父元素中的状态和处理程序的单独组件中,现在它可以工作。

{this.state.answers[0] ? this.state.answers.map(answer =>
    <Answer
         key={answer.displayOrder}
         answer={answer}
         optionsForSelect={this.state.optionsForSelect}
         _setRecommended={this._setValueForRecommended.bind(this, answer.displayOrder)}
         _setExclude={this._setValueForExclude.bind(this, answer.displayOrder)}
    />) : null}

它的工作原理是因为Answer中的所有道具“除了处理程序”我保持自己的状态并使用componentWillReceiveProps来更新状态,强制重新渲染每个映射元素,最后它起作用。