我在React Native中使用钩子。 发生某些事情,当我更新状态时,不会立即分配值。 这是我的示例代码。
async function updateDeviceAdminAttributes(Token) {
await getAdminAttributes(Token); //This function update objWithRPC
if(objWithRPC != null)
{
setDeviceAdminAttributes(objWithRPC);
console.log(deviceAdminAttributes); //this return object {}
} else {
setDeviceAdminAttributes({});
console.log(deviceAdminAttributes); //this return Object{ rpc1 : true }
}
}
我正在使用react native,并且 getAdminAttributes 函数是来自API的 GET 请求,该API更新了 objWithRPC 对象。当我更改Picker的值(在应用程序中响应本机时),更改 picker 的值时,就会激活此功能,这使我可以查询更新objWithRPC值的查询。如果查询中不包含数据,那么如果不包含该对象,它将抛出一个空值
在输入条件 if(objWithRPC!= Null)时,此变量已正确更新 输入应该出现问题的地方是我通过 useState 钩子在那里更新了变量。
这样做返回 obj = {}
如果我更改了请求,使其返回null,则应该返回obj = {},但是现在,如果它返回原先的对象,则应该返回
为什么会这样?
答案 0 :(得分:1)
这是因为状态更改是异步的
如果您想跟踪状态变化,可以使用useEffect
useEffect(() => {
console.log(deviceAdminAttributes);
}, [deviceAdminAttributes]);