Reactjs 当我设置相同的状态值时,如何避免触发器useEffect?
我使用react钩子调用API并将数据设置为state,我仍然有一些控件视图可以更改值,但是当我更改它时,我的API函数再次触发,它会导致我的视图多次重新渲染 如何像类中的componentReactjs 当我设置相同的状态值时,如何避免触发器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 () =&
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])
看