我正在用react-native-camera
拍照并保存data.uri
的状态。
第一次运行代码,状态值为空;在随后的捕获中,状态值具有先前的data.uri
值。
其他setState
调用的行为也类似(该值在首次运行后不会更改,但在随后的点击中确实会更改)。
我对React Native不太了解-可能是什么原因导致了这种行为?
[
我在做什么不对?任何帮助。
答案 0 :(得分:0)
调用setImageUri
时,您正在计划对该组件状态的更新。但是,imageUri
已分配给当前渲染时当前处于状态 的值,并且在下一次渲染组件之前不会反映新值。这就是为什么您第一次看到一个空字符串,并在随后的调用中看到“上一个”值的原因。
因此,看起来您本身并没有做任何“错误”的事情,只是误解了更新组件状态时发生的事情。
如果您希望看到此效果,可以尝试useEffect
:
useEffect(() => {
console.log(`The current value of imageUri is: ${imageUri}`);
}, [imageUri]);
只要imageUri
的值更改,该调用就会被调用。
答案 1 :(得分:0)
我认为您应该更加熟悉React中的状态。 https://reactjs.org/docs/state-and-lifecycle.html#using-state-correctly
设置值不是同步任务。