【发布时间】:2020-03-28 10:50:59
【问题描述】:
我正在使用相同的Form 组件来编辑帖子并在我的应用程序中添加新帖子。 Form 的 componentDidMount 如下所示:
componentDidMount() {
this.props.match ? this.props.dispa({
type: 'ON_LOAD_ACTION',
payload: this.props.fetch.data.find(x => x.id == this.props.match.params.id)
}) : this.props.dispa({
type: 'ON_RESET',
payload: ''
});
}
它会检查 URL 上是否有 id,例如localhost:3000/edit/id
我正在尝试更新帖子。我提取帖子的数据,我可以用它填写表格。如果 URL 上没有 id,我只会将表单呈现为空。第二次调度用于将状态重置为其初始状态。
我正在使用react-router/redux,我的问题是当我在编辑表单上并单击创建表单时。它不会重新渲染,并且我得到了我所在帖子的值。我认为这是因为我正在重定向到相同的表单。
<Route exact path="/create" >
<FromProduct />
</Route>
<Route exact path="/edit/:id" component={FromProduct}></Route>
但是如果我点击submit 按钮更新帖子或者我先去/home,组件会完美地重新渲染。
【问题讨论】:
-
问题可能是
componentDidMount没有被再次调用,因为组件已经挂载,尝试在componentDidUpdate方法中也加入这个检查。 -
嘿,我已经尝试了同样的结果
-
@FaroukYD 为这样的复杂场景提供沙箱(例如代码沙箱)示例总是很不错的。
标签: javascript reactjs react-redux react-router