我知道这是一个重复的问题。其他问题不能解决我的问题。
代码如下:
const [roles, setRoles] = useState([]);
const { loading, error, data } = useQuery(GetRoles);
useEffect(() => {
if (!loading) {
const rolesArray = data.roles.map(role => { return { value: role.name, id: role.id } });
setRoles([...rolesArray]);
}
}, [loading, data]);
角色不会更新。我想念什么?
加载值是true
或false
数据值是:
{roles:[{id: "1", name: "technical admin"}, {id: "2", name: "admin"}]}
答案 0 :(得分:0)
您尝试过
setRoles(prevRoles => [prevRoles, ...rolesArray])
可能是问题所在,否则请粘贴以下值 加载,错误和数据
答案 1 :(得分:0)
// you can use this
setRoles(rolesArray)
// instead of this
setRoles([...rolesArray])
// as you completely overwrite the array
但这只是关于样式。至于您的问题,如果您100%确信useEffect内的所有内容都可以正常工作,那么只有一个答案-挂钩仅在更改“加载”或“数据”时才起作用。如果没有,那就没有变化。