javascript - 当我更新列表作为其依赖项时,React useEffect 有时不会触发

标签 javascript reactjs

const mylist = [1,2,3,4,5];
useEffect(() => {
console.log(mylist)
}, [mylist])

这是我的代码的一部分。当我将新元素追加到 mylist 时,useEffect 不会触发,但当我删除元素时,它会触发。

如何修复它,以便在我将新元素附加到 mylist 时触发它

我有一个按钮在执行 onClick(e => mylist.push(e))
和另一个 onClick(e => mylist.remove(e))

最佳答案

您正在创建的数组未存储在状态中,因此每次渲染都会创建一个新数组。解决方案是使用react state:

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>);
}



关于javascript - 当我更新列表作为其依赖项时,React useEffect 有时不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59584817/

相关文章:

javascript - Firebase Cloud Function Transaction write on firestore 会引发等待错误

reactjs - react typescript 如何使用 useRef 作为 Prop

node.js - 服务器未向前端发送正确的响应?

javascript - react 绑定(bind)到类外的常量

javascript - 获取TinyMce( Orchard )中元素的z索引

javascript - 如何删除 wordpress 主题以覆盖插件 css 和 js

javascript - 在 EmberJS 的文本区域中按下输入时不要输入换行符

javascript - 如何在 stimulus.js 中获取元素的类

reactjs - react 条件样式无法正确渲染

javascript - Hyperstack 中的高阶组件