Javascript 为什么我的useState不重新打印包含新元素的数组?

Javascript 为什么我的useState不重新打印包含新元素的数组?,javascript,reactjs,antd,use-state,Javascript,Reactjs,Antd,Use State,为什么我的useState,不工作属性? 在筛选器搜索栏中,我试图根据输入重新打印数组的元素,但无法获得正确的重新打印 const clickSearchIcon = (query) => { let filteredItems = []; console.log('ITEAM ALL:', itemsAll); //works --> 9 setItems(itemsAll); //DONT work, --> 1st time: 9 , second

为什么我的useState,不工作属性? 在筛选器搜索栏中,我试图根据输入重新打印数组的元素,但无法获得正确的重新打印

const clickSearchIcon = (query) => {
    let filteredItems = [];
    console.log('ITEAM ALL:', itemsAll); //works --> 9
    setItems(itemsAll); //DONT work, --> 1st time: 9 , second time: 0; both times must be 9
    console.log('items:', items);
    //filtrar items que concuerdan con el query
    items.map((item) => {
      if (item.title === query) return filteredItems.push(item);
    });
    //repintar item filtrado con el query
    setItems(filteredItems); //does work
  };
如果您需要更多的上下文,这就是


itemsAll
从未更改,因此您无需在
单击搜索图标
功能中对其进行更新。要筛选项目,您可以使用
筛选
而不是
映射

const clickSearchIcon=(查询)=>{
常量filteredItems=items.filter((item)=>item.title==query);
设置项(filteredItems);
};

所有项目
从未更改<代码>设置项未看到它已更改。因为
allItems
是一个数组,虽然您更改了它的项,但对象本身(将其视为指针)没有更改

只需使用新变量,复制
allItems
,并在新变量上使用
setItems


让newItems=[…allItems]
//修改新项目
设置项(新项)

尝试一下,但只重复打印1次…:(