我很反应。我正在使用redux进行反应。我有一个表单(我使用redux-form),通过它我可以保存数据或编辑数据。 我的问题是,在编辑模式下,我使用componentWillReceiveProps填充数据。并且填充完整,现在当我尝试清除表格上的任何字段时再次填充。
componentWillReceiveProps(nextProps){
this.props.dispatch(initialize('NewProject', nextProps.project.project[0]));
}
任何帮助都会非常充实。
答案 0 :(得分:2)
您是否有理由不在其他地方调度此操作,例如componentDidMount
?我不能说没有看到更多的代码,但是每当你编辑你的表单时,React可能再次调用componentWillReceiveProps
并用你给你的组件的行为覆盖你做的任何事情。
请注意,即使道具没有更改,React也可以调用此方法,因此如果您只想处理更改,请确保比较当前值和下一个值。当父组件导致组件重新渲染时,可能会发生这种情况。
如果可能,您可以将调度移至更可预测的事件,例如componentDidMount
。通常,如果组件具有多个可能的状态,则您的render
方法应该能够处理不同的情况。您还可以创建组件的edit
和save
版本,并根据您收到的props
呈现一个或另一个。正如您所说,“填充”数据的最佳方法是为您的组件定义propTypes
,然后使用props
将该数据插入render
方法中的元素。