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])
添加回答
舉報