reactjs React:我能找出数组状态中哪些元素被更新了吗?

carvr3hs  于 2022-11-29  发布在  React
关注(0)|答案(2)|浏览(104)

如果我有一个用useState钩子创建的React数组状态,是否有可能以某种方式找出哪些元素被更新了?我的目的是在状态更新时运行一些代码,在useEffect钩子内,但我想访问更新的数组元素的索引。这可能吗?

vuv7lop3

vuv7lop31#

是的,您可以,但前提是索引未更改。
你可以保持你的前一个状态,在你的useEffect中,遍历你的新数组,并检查索引i处的元素是否等于前一个状态中的对应元素:

const [myArray, setMyArray] = useState([]);
const [myPreviousArray, setMyPreviousArray] = useState([]);

// Assume we have a function that updates the state
const handleArrayDataChange = (newValue) => {
  setMyPreviousArray([...myArray]);
  setMyArray(newValue);
}

useEffect(() => {
  myArray.forEach((item, index) => {
   if(JSON.stringify(item) !== JSON.stringify(myPreviousArray[index])) {
    // The item is updated
   }
  });
}, [myArray]);
k2fxgqgv

k2fxgqgv2#

我的意图是在useEffect挂接内每当状态更新时运行一些代码,
这可以通过向下传递useEffect的dependecy数组中的状态来完成。

const [nameArray, setNameArray] = useState([]);

useEffect(() => {
// things you want to do
},[nameArray]);

相关问题