【发布时间】:2021-10-16 16:43:27
【问题描述】:
有这个代码sn-p:
const myValue = useSelector(
(state) => state.myValue,
shallowEqual
);
useEffect(() => {
if (myValue?.apiStatus === 'OK') {
console.log('run it');
const cartId = Cookies.get('cartId');
dispatch(doSomething(cartId));
}
}, [myValue, dispatch]);
首先,myValue 的值是未定义的,所以 useEffect 不会做任何事情。但是一旦它有值并且它包含 apiStatus === 'OK',控制台日志就会出现数十次。
有没有办法让它在这种情况下只运行一次?
【问题讨论】:
-
doSomething是否会更改myValue?如果是,这将在循环中运行,因为 useEffect 将在每次myValue更改时运行,因为它在依赖数组中 -
@SinanYaman 不,它不会改变它。使用相同的值进行调用
-
你能创建一个codesanbox来重现这个问题吗?
标签: javascript reactjs ecmascript-6 react-hooks use-effect