向数据库React Router添加条目后数据未刷新

用户1986245

我有一个页面,我将产品添加到产品列表中。添加成功后,应用程序需要返回列表以再次查看添加了新条目的产品。重定向到产品列表工作正常,我再次看到产品,但是新产品不在列表中。为了查看新添加的产品,我必须重新加载页面。由于某种原因,该组件没有被重新渲染,因此没有从服务器请求新产品列表。

为什么会这样呢?如何在不强制刷新整个应用程序的情况下重新渲染ProductPage。

我已在codesandbox中重现了该问题

科里·哈珀(Cory Harper)

雅各布·史密斯(Jacob Smith)在上述评论中几乎涵盖了这一点。但是,为了稍微解释一下他,您有一个类似于以下内容的设置:

// App.jsx

return (
  <>
    <h1>Some header</h1>
    <Switch>
      <Route path='productlist' component={ProductList} />
    </Switch>
  </>
)
// ProductList.jsx

const [state, setState] = usetState();

useEffect(() => {
  loadSomeData().then(data => {
    setState(data);
  })
}, []);

return (
  <>
    <Switch>
      <Route path='productlist' render={() => <ProductPage data={state} />} />
      <Route path='productlist/add' component={AddProduct} />
    </Switch>
  </>
)

由于此数据流,仅在ProductList装入,卸载并再次装入时才装入新数据然而,没有你要么ProductPage还是AddProduct不断卸除ProductList,因为它们都是在该组件呈现。

可以通过两种主要方法解决此问题,将的渲染AddProduct移到顶层,App.jsx或者,如果Axios.post返回新数据,则可以将状态设置方法传递给AddProduct并在.then回调中设置状态,因为未卸载父组件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

向大数据库表添加新列

来自分类Dev

向Wordpress数据库添加新列

来自分类Dev

向数据库提交多个值

来自分类Dev

Android SQLite不会向数据库添加值

来自分类Dev

通过光滑的scala向数据库添加记录

来自分类Dev

向SQL数据库(实体数据库)添加列表

来自分类Dev

在Jhipster中向数据库添加新连接

来自分类Dev

向Django数据库添加元素

来自分类Dev

向从数据库填充的表中添加删除按钮

来自分类Dev

如何从IEnumerable集合向数据库添加对象?

来自分类Dev

向数据库添加类类型

来自分类Dev

刷新后重复数据库条目

来自分类Dev

将条目添加到数据库后,Blazor组件未刷新

来自分类Dev

向数据库PHP添加数据

来自分类Dev

停止向数据库添加优势点

来自分类Dev

无法向数据库添加行

来自分类Dev

如何从JDBC向MySQL数据库添加记录

来自分类Dev

尝试向数据库添加列时出错

来自分类Dev

Rails:向数据库的某些条目添加新列

来自分类Dev

向MySQL数据库添加数据的首选方法

来自分类Dev

AngularJS向数据库发布空白

来自分类Dev

向 sql 数据库添加值后 PHP/Ajax 自动刷新

来自分类Dev

尝试向 SQL 数据库添加值时遇到 SQL 数据库问题

来自分类Dev

删除数据库条目后刷新列表视图

来自分类Dev

向数据库迁移添加了列:条目未显示在 SHOW 视图中

来自分类Dev

在 Single Go 中向 Django 数据库添加多个条目

来自分类Dev

向sqlite数据库添加表

来自分类Dev

通过 React GUI 触发的实体框架向数据库添加新条目时出现重复条目

来自分类Dev

向sqlite数据库插入数据