Reactjs 我可以用“a”吗;“使用效果”;只有一定的价值?

Reactjs 我可以用“a”吗;“使用效果”;只有一定的价值?,reactjs,react-hooks,Reactjs,React Hooks,您好,我正在尝试使用react钩子的UseEffect,我知道我可以添加变量,在更改时可以激活它,但我想知道是否有方法仅在值满足某些条件时激活UseEffect 我已经在useEffect中创建了一个条件,我知道它是有效的,但我想知道是否有其他方法可以做到这一点 useEffect(() => { doSomething(); if(!isOpen) doSomething2(); }, [isOpen, otherThing]); 在上面的示例中,我希望doSometh

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

我已经在useEffect中创建了一个条件,我知道它是有效的,但我想知道是否有其他方法可以做到这一点

useEffect(() => {
  doSomething();
  if(!isOpen)
   doSomething2();
}, [isOpen, otherThing]); 
在上面的示例中,我希望doSomething2仅在其值为false时工作

本例中的isOpen有一个默认值false,当它从数据库中检索某个内容时,它将变为true,最后当它完成提取时,它将返回false

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


有办法吗?

没有别的办法。您的尝试已经正确。这是唯一的办法。干杯


useffect()
只允许依赖项,不允许条件属性

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

const[selectedCategory,setSelectedCategory]=React.useState(null);
const[restaurants,setRestaurants]=React.useState({});
如果要获取特定属性的事件,如
餐厅
然后您可以使用一种
useffect
方法来实现这一点。对于另一种方法,您可以使用另一种
useffect
方法,如下所示

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