我只能使用一定值的“ UseEffect”吗?

时间:2019-10-27 00:24:02

标签: reactjs react-hooks

你好,我正在尝试使用react挂钩的UseEffect,我知道我可以添加在更改时可以激活它的变量,但是我想知道是否只有在值满足特定条件时才激活useEffect的方法

我已经在useEffect内部创建了一个条件,并且我知道它可以工作,但是我想知道是否还有另一种方法。

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

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

此示例中的isOpen的默认值为false,然后从数据库中检索到某些内容时将其转换为true,最后在完成获取后将其返回为false。

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

有办法吗?

2 个答案:

答案 0 :(得分:0)

别无他法。您的尝试已经正确。那是唯一的方法。干杯!

useEffect()仅允许依赖项,而没有条件属性。

答案 1 :(得分:0)

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

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

谢谢。