2 回答
TA贡献1934条经验 获得超2个赞
在这个例子中,似乎正在工作,但我建议你使用.find(),这样你就可以在一次调用中拥有对象,而不是从索引中获取它。就像
const getAccessLevel = id => {
const accessLevels = [
{ id: 0, name: "Admin" },
{ id: 1, name: "Customer" },
{ id: 2, name: "Client" },
{ id: 3, name: "Viewer" }
];
let accessLevel = accessLevels.find(array => array.id === id);
console.log(accessLevel);
let AccessLevelName = accessLevel.name;
return AccessLevelName;
};
TA贡献1712条经验 获得超3个赞
我发现了问题!这是因为反应渲染顺序而发生...因为第一次调用此函数 id 时未定义。
它在这里得到了错误:
let AccessLevelName = accessLevels[index].name
我所做的修复是使用Effect钩子。当操作(redux)函数更改具有id值的数据值时,它会再次执行getAccessLevel,但定义了id!
获取访问级别 :
export const getAccessLevel = id => {
console.log(id)
const accessLevels = [
{ id: 0, name: "Admin" },
{ id: 1, name: "Customer" },
{ id: 2, name: "Client" },
{ id: 3, name: "Viewer" }
];
let accessLevel = accessLevels.find(array => array.id === id);
console.log(accessLevel);
let AccessLevelName = ''
if (id) {
AccessLevelName = accessLevel.name
}
return AccessLevelName;
}
用途效果 :
useEffect(() => {
props.findGroup(id)
}, [])
const handleAccessLevel = () =>{
setAccessLevelName(getAccessLevel(props.data.accessLevel))
}
useEffect(() => {
handleAccessLevel()
}, [props.data])
添加回答
举报