网站搜索

reactjs - 如果使用 react-redux 的 useSelector,当 deps 变化时 useEffect 不会调用


这是我的代码示例:

import { useDispatch, useSelector } from 'react-redux';
import { updateMyData } from '../features';

const MyComponent = ({ list }) => {
  const dispatch = useDispatch();
  // select myData from redux store
  const someData = useSelector((state) => state.myData);

  React.useEffect(() => {
    // YOU WILL NOT SEE THIS LINE
    console.log('useEffect', someData);
  }, [someData]);
  // each time I can see newly changed data
  console.log('someData', someData);

  const handleClick = () => {
    const newData = list.find((l) => l.name === 'myName');
    // change myData, in my case it is some pagination, and I select newData from existing list
    dispatch(updateMyData(newData));
  };

  return <div onClick={handleClick}>{'Hello world!'}</div>;
};

就我而言,我有一个项目列表,当我按下某个按钮时会改变它(在 redux store 中)。someData 改变了,MyComponent 重新渲染了,但 useEffect 没有被调用。

useEffect 仅在第一次渲染时被调用。

当其依赖项改变时,为什么 useEffect 没有被调用?