基本上我们有列表组件,如下所示:
{this.state.answers[0] ? this.state.answers.map(answer =>
<li key={answer._id}>{answer.text}</li>) : null}
当我更新状态组件重新渲染但是映射列表保持不变,即使在this.state
新的,不同的数据,列表使用旧数据。
那是某种虫子还是什么?为什么列表在重新渲染之后不会在更新状态后重新映射?
答案 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
来更新状态,强制重新渲染每个映射元素,最后它起作用。