如何将元素推入useState数组中?
在react状态下,这是一种旧方法吗?还是什么新鲜事
例如,设置状态推送示例
使用useState时,可以获得状态项的更新方法:
const[theArray,setTheArray]=useState(initialArray);
然后,当需要添加新元素时,使用该函数并传入新数组或将创建新数组的函数。通常是后者,因为状态更新是异步的,有时是批处理的:
设置数组(oldArray=>;[…oldArray,newElement]);
有时,如果您仅更新处理程序中特定用户事件的数组,如单击(但不象鼠标移动),则可以不使用该回调窗体:
设置数组([…数组,新元素]);
React确保刷新渲染的事件是;离散事件“;在这里列出
实时示例(将回调传递到setTheArray):
const{useState,useCallback}=React;
函数示例(){
const[theArray,setTheArray]=useState([]);
常量addEntryClick=()=>{
setTheArray(oldArray=>;[…oldArray,`Entry${oldArray.length}`]);
};
返回[
<;input type=“button”onClick={addEntryClick}value=“Add”/>;,
<;div>;{theArray.map(条目=>;
<;div>;{entry}<;/div>;
)}
<;/div>;
];
}
ReactDOM.render(
<;示例/>;,
document.getElementById(“根”)
);
<;div id=“root”></部门>;
<;脚本src=”https://cdnjs.cloudflare.com/ajax/libs/react/16.8.1/umd/react.production.min.js“></脚本>;
<;脚本src=”https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.1/umd/react-dom.production.min.js“></脚本>
由于对数组的唯一更新是在单击事件(一个“离散”事件)中的更新,因此我可以在附录中直接更新:
const{useState,useCallback}=React;
函数示例(){
const[theArray,setTheArray]=useState([]);
常量addEntryClick=()=>{
setTheArray([…theArray,`Entry${theArray.length}`]);
};
返回[
<;input type=“button”onClick={addEntryClick}value=“Add”/>;,
<;div>;{theArray.map(条目=>;
<;div>;{entry}<;/div>;
)}
<;/div>;
];
}
ReactDOM.render(
<;示例/>;,
document.getElementById(“根”)
);
<;div id=“root”></部门>;
<;脚本src=”https://cdnjs.cloudflare.com/ajax/libs/react/16.8.1/umd/react.production.min.js“></脚本>;
<;脚本src=”https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.1/umd/react-dom.production.min.js“></脚本>