reactjs - React map 函数创建带有错误的参数
问题描述
我是 React 的初学者。
js
const obj ={
{name:objA, id:11111},
{name:objB, id:22222},
};
const [isRedirect, setIsRedirect] = useState(false);
xxxxxxx.....................
return(
obj.map((data) => (
<TableCell onClick = {setIsRedirect(true)}>
data.name
</TableCell>
{ isRedirect ?
<Redirect to={{
pathname:'/user-management',
state:{userID:data.id},
}} /> : "" }
)
)
用户管理.js
useEffect(() => {
const history = createHashHistory();
if (history.location.state && history.location.state.transaction)
{
let state = { ...history.location.state };
delete state.transaction;
history.replace({ ...history.location, state });
}
console.log(props.location.state.userID); // show 22222
}
单击objA表格单元格后,user-management.js中的代码执行,但是当我console.log(props.location.state)时,它显示用户ID为22222而不是11111。似乎是props.location.state在用户管理中始终存储 json 数组 obj 的最后一个值。如何修改代码?如果你们能提供帮助,我将不胜感激。对不起代码结构。
解决方案
可能还有更多事情要做,但我认为onClick
处理程序应该是onClick={() => setIsRedirect(true)}
.
我看到您正在尝试渲染多个Redirect
s,但您只有一个isRedirect
状态。整个组件呈现...您映射的每个元素。我怀疑,一旦您切换isRedirect
true 时,您可能会为每个映射的元素获得重定向。它们都重定向到相同的路径,所以最后一个带有数据的重定向就是你看到的那个。
建议
仅有Redirect
条件地渲染一个,并设置isRedirect
为data.id
值(假设 id 总是真实的!!!)
...
const [redirectId, setRedirectId] = useState(null);
...
if (redirectId) {
return (
<Redirect
to={{
pathname: '/user-management',
state: { userID: redirectId},
}}
/>
);
}
return obj.map((data) => (
<TableCell onClick={() => setRedirectId(data.id)}>
{data.name}
</TableCell>
);
推荐阅读
- flutter - 如何在颤动中将自定义小部件传递给另一个自定义小部件?
- linux - 在 Linux (Ubuntu) 中使用 MI Box 进行 WIFI 调试。设备无法识别
- probabilistic-programming - Pyro Paramstore 的不同访问方法给出不同的结果
- vue.js - 带有 prop 数组的 Vue.js 无限循环
- html - 容器内的网格列
- python - 如何从.gitignore 中提取文件夹?
- r - 编译我的翻书 Xaringan 甲板时遇到问题
- powershell - ServiceNamePrincipal 到 nslookup
- python - 如何将列表中的项目转换为单独的列值?
- go - Robotgo 不能监听多个事件