Javascript 为什么我的useState不重新打印包含新元素的数组?
为什么我的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
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次…:(