React native hooks数组未推送最后一项

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

我有这段代码,扫描条形码并将其推送到我的数组中。问题是,假装没有正常工作。例如,当我推“a”时,数组仍然是epmty,然后当我推b时,数组采用previus值推送数组[“a”],当我推c时,它就像数组[“a”,“b”]。 这是数组的声明:

 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])