我可以只使用具有特定值的“UseEffect”吗?

IT技术 reactjs react-hooks
2021-05-05 05:09:59

您好,我正在尝试使用 React 钩子的 UseEffect,我知道我可以添加在更改时可以激活它的变量,但我想知道是否有办法仅在值满足某些条件时激活 useEffect。

我已经在 useEffect 中创建了一个条件,我知道它有效,但我想知道是否有另一种方法来做到这一点。

useEffect(() => {
  doSomething();
  if(!isOpen)
   doSomething2();
}, [isOpen, otherThing]); 

在上面的示例中,我希望 doSomething2 仅在其值为 false 时才起作用。

在这个例子中 isOpen 有一个默认值 false,然后当它从数据库中检索到一些东西时它变成 true,最后当它完成提取时它又回到 false。

我希望钩子仅在值从 true 切换到 false 时激活,而不是在每次更改时激活。

有没有办法做到这一点?

2个回答

别无退路。您的尝试已经正确。这是唯一的办法。干杯!

useEffect() 只允许依赖,没有条件属性。

您可以拥有多个可以像这样更改的数据。

const [selectedCategory, setSelectedCategory] = React.useState(null);
const [restaurants, setRestaurants] = React.useState({});

如果您想获取特定属性的事件,restaurants 那么您可以使用一种useEffect方法。对于另一个,您可以使用另一种useEffect方法,如下所示。

const [selectedCategory, setSelectedCategory] = React.useState(null);
const [restaurants, setRestaurants] = React.useState(restaurantData);

useEffect(() => {
   console.log("this is for selectedCategory")
}, [selectedCategory]);

useEffect(() => {
   console.log("this is for restaurants")
}, [restaurants]);

谢谢。