reactjs - 是否可以从 React 路由中获取密钥以传入组件?
问题描述
我的目标是编辑表单和添加表单,现在我的问题是当我点击“编辑”按钮时,它成功显示,但是当按下“添加新”按钮时,它会呈现以前的数据。
目前,我正在尝试在我的反应应用程序中使用单独的路由但在相同的组件中添加/编辑表单,如下所示:
<>
<Switch>
<Route key="add" path={`${match.url}/new`} component={AgenciesUpdatePage} />
<Route key="edit" path={`${match.url}/:id/edit`} component={AgenciesUpdatePage} />
<Route path={`${match.url}/:id`} component={AgenciesViewPage} />
<Route path={match.url} component={AgenciesListPage} />
</Switch>
</>
我如何让(密钥)传递给我的组件,因为根据我的理解,密钥对于区分同一组件的两条路径是必要的。
否则,如果您有其他解决方案,我想检查一下。
解决方案
key
路由中 prop的目的是用于组件映射。将AgenciesUpdatePage
无法使用您当前的实现访问其值。
将您的路线更改为以下内容:
<Route path={`${match.url}/new`} component={() => <AgenciesUpdatePage action="add" />} />
<Route path={`${match.url}/:id/edit`} component={() => <AgenciesUpdatePage action="edit" />} />
然后更新您的AgenciesUpdatePage
组件以使用您新实现action
的道具。
您可以AgenciesUpdatePage
使用以下方式访问它:
const AgenciesUpdatePage = ({ action }) => {
if (action === 'add') // Render or do something
if (action === 'edit') // Render or do something
return (...)
}
推荐阅读
- git - Git推送错误:预期的提交者电子邮件'xxxx'但发现'yyyy'
- python - python控制无人机
- kivy - Kivy 如何使用进度条创建时间计数器?
- javascript - JavaScript 遍历 NodeList
- python - Python 脚本可以在 Debian 机器上运行并通过 ssh 在我的本地机器上播放声音吗?
- django - 在基于类的视图中更改基于函数的视图以进行表单“请求”处理
- angular - Angular 7 build--prod 生成的文件
- angular - 如何在 Angular 7 中获得正确的生命周期钩子
- javascript - 迭代具有相互引用的对象数组并将这些从字符串解析为对象
- xml - XCAP xml 格式