gpt4 book ai didi

javascript - 通过 React 路由器将 prop 传递给组件

转载 作者:行者123 更新时间:2023-12-02 21:36:00 25 4
gpt4 key购买 nike

我有一个组件,它是一个 Material 表。单击编辑按钮后,我有这个功能:

//MaterialTable.js

...
const handleEdit = (e,Data) => {
console.log(Data)
return(<EditFunction id={Data.id} />)
...

这应该运行 EditFunction 组件,该组件接收 props.id 并通过其“id”从 API 中提取数据,并将其填充到自定义表单中进行编辑,然后再次保存。我在那里有console.log来显示handleEdit实际上被调用了,确实如此。所有具有匹配“id”的数据都会打印在控制台中。

我不想直接调用该函数,而是通过 react 路由器调用它。//路由器.js

...
<Router>
<Switch>
<Route path = '/Data/Edit' render= {props=> <Edit/>}/>
</Switch>
</Router>
...

我的目标是让 URL 读取类似于 localhost:3000/Data/Edit/id 的内容,其中 id 是该特定数据的 ID 号。

我不知道如何在 MaterialTable.js 文件中呈现链接。我知道下面的语法是错误的,但这是我能想到的唯一方法。//MaterialTable.js

const handleEdit = (e,Data) => {
console.log(Data)

return(id = {Data.id} component={Link} to=Data/Edit/id)
...

最佳答案

我想出了一个解决办法。以下是列出的文件更改

//Routers.js

...
<Route path = '/Data/Edit/:id' component={Edit}/>
...

//MaterialTable.js

const handleEdit = (e,Data) => {
const id = Data.id
let idUrl = '/Data/Edit/' + id
props.history.push(idUrl)
}

/Data/Edit/:id 中的 : 调用 Edit 函数并查找 prop 'id' 并将其值放入路由器中。在 MaterialTable.js 中,定义了 id,并且 history.push 将路由更改为适当的 url。

关于javascript - 通过 React 路由器将 prop 传递给组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60494258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com