Reactjs 当我设置相同的状态值时,如何避免触发器useEffect?

Reactjs 当我设置相同的状态值时,如何避免触发器useEffect?,reactjs,react-native,react-hooks,Reactjs,React Native,React Hooks,我使用react钩子调用API并将数据设置为state,我仍然有一些控件视图可以更改值,但是当我更改它时,我的API函数再次触发,它会导致我的视图多次重新渲染 如何像类中的componentcomponentDidMount函数一样使用fetchData函数 const [brightness, setBrightness] = useState(0); useEffect(() => { fetchData(); }); const fetchData = async () =&

我使用react钩子调用API并将数据设置为state,我仍然有一些控件视图可以更改值,但是当我更改它时,我的API函数再次触发,它会导致我的视图多次重新渲染

如何像类中的component
componentDidMount
函数一样使用
fetchData
函数

const [brightness, setBrightness] = useState(0);

useEffect(() => {
  fetchData();
});

const fetchData = async () => {
  const value = await something();  // call API get the first value
  setBrightness(value);
};

return (
  <View>
    <SomeView value={brightness} onComplete={(value) => setBrightness(value)}
  </View>
);
const[亮度、亮度]=useState(0);
useffect(()=>{
fetchData();
});
const fetchData=async()=>{
const value=await something();//调用API获取第一个值
正确性(价值);
};
返回(
正确性(值)}
);

您的
useffect
将在每次渲染时触发,因为您没有提供第二个参数

第二个参数是效果的条件。在您的情况下,您只希望它运行一次,这样就可以提供一个空数组

useEffect(() => {
   // Run once
}, [])

假设你想让它在任何时候得到一些道具改变,你可以写

useEffect(() => {
   // run every time props.myValue changes
}, [props.myValue])