【发布时间】:2021-08-03 10:40:05
【问题描述】:
我有 4 个组件:App, CatalogList, CatalogPreview, CatalogDetail
App 是父组件,我有这些状态值:
const [catalog, setCatalog] = useState({ id: 1, name: 'Electronics' })
const [isModalOpen, setIsModalOpen] = useState(false)
CatalogList 和 CatalogPreview 组件接收上述状态值作为 props 以及它们的 setter 函数。
内部CatalogList.js:
我有一个目录链接列表(电子产品、家具……),当您单击其中一个链接时,
它打开了CatalogPreview 模式。在模态框内,有一个 'Explore' 按钮。
当你点击'探索'按钮时,它需要做4件事:
将所选目录设置为状态(在 App.js 中)
将所选目录保存在 localStorage
导航到详细信息页面
关闭模态窗口
我在 'Explore' 按钮的点击处理程序(在模式内)中尝试了以下操作:
function explore() {
props.setCatalog({...})
props.setIsModalOpen(false)
window.localStorage.setItem('catalog', JSON.stringify({...})
history.push('detail-route') // this brings up the CatalogDetail
}
问题:
- 这是正确的方法吗?
- 在
CatalogDetail组件中,如果我单击“删除”按钮并发出删除 API 请求,
如何在调用完成之后导航回CatalogList路由。
【问题讨论】:
-
这不一定是不正确的,尽管恕我直言,它可以改进。如果您可以更新您的问题以包含每个组件的完整 Minimal, Complete, and Reproducible Code Example,我想我可以更好地提出建议。
-
@DrewReese 添加了代码沙箱链接
标签: reactjs react-router react-hooks use-effect use-state