javascript - 当我将列表更新为其依赖项时,React useEffect 有时不会触发
问题描述
const mylist = [1,2,3,4,5];
useEffect(() => {
console.log(mylist)
}, [mylist])
这是我的代码的一部分。当我将新元素附加到mylistuseEffect
时不会触发,但是当我删除元素时会触发。
如何修复它以便在我将新元素附加到mylist时触发它
我有一个按钮在做onClick(e => mylist.push(e))
,另一个按钮在做onClick(e => mylist.remove(e))
解决方案
您正在创建的数组未存储在状态中,因此每次渲染都会创建一个新数组。解决方案是使用反应状态:
function MyComponent() {
const [myList, setMyList] = useState([0,1,2,3,4])
useEffect(() => {
console.log(myList)
}, [myList])
return (
<div>
{JSON.stringify(myList)}
<button onClick={() => setMyList([...myList, myList.length])}>Add</button>
</div>);
}
推荐阅读
- dolphindb - 使用 PythonAPI 运行 dolphindb 代码
- javascript - JS函数返回NaN
- c++ - 如何检查两个十进制数的乘积是否大于 ULONG_MAX?
- android - Android 有没有类似 setVisibility() 的函数?
- gimp - gimp 从照片中提取铅笔画
- sql - 我正在将数据输入到一个 sql 表中,然后发生了这个错误
- python-3.x - 需要使用python、django创建用户参考图
- reactjs - 如何在不使用'exact'参数的情况下在反应路由器dom中构建路由?
- apache-nifi - Nifi > RunMongoAggregation > 抛出超时异常
- routes - 等效于 Adonis JS 的 Ziggy