React native hooks数组未推送最后一项
我有这段代码,扫描条形码并将其推送到我的数组中。问题是,假装没有正常工作。例如,当我推“a”时,数组仍然是epmty,然后当我推b时,数组采用previus值推送数组[“a”],当我推c时,它就像数组[“a”,“b”]。 这是数组的声明:React native hooks数组未推送最后一项,react-native,React Native,我有这段代码,扫描条形码并将其推送到我的数组中。问题是,假装没有正常工作。例如,当我推“a”时,数组仍然是epmty,然后当我推b时,数组采用previus值推送数组[“a”],当我推c时,它就像数组[“a”,“b”]。 这是数组的声明: const [array, setarray] = useState([]); 这是muy函数: alert( `barcode of type ${type} and value ${data} scanned successfu
const [array, setarray] = useState([]);
这是muy函数:
alert(
`barcode of type ${type} and value ${data} scanned successfully`
);
await setarray([...array, data]);
console.log("my array : ", array);
要将某些内容写入状态变量,您的操作是正确的
const [array, setarray] = useState([]);
但是,setarray
是一种更改状态变量的方法(类似于指针)
无法使用访问新的“定点”值
console.log("my array : ", array);
建议的方法是useffect
采取
您可能希望仅在数组更改时生效,因此我们将在那里添加一个依赖项
useEffect(()=>{
// once the array changed
console.log("my array : ", array);
}, [array])
好吧,setarray
不是一个承诺函数。你可以使用useffect钩子来实现这一点。我怎样才能使用useffect将值推送到数组呢?只需去掉async/await,你就不需要它们将值传递给useState。我试过了,但即使没有await,它也不能正常工作。我甚至试过这个:setarray(arr=>([…arr,data]));但还是一样的问题谢谢你,你解决了我的问题
useEffect(()=>{
// once the array changed
console.log("my array : ", array);
}, [array])