如何解决ReactJS内部的函数多次调用
我正在使用Ionic React并使用插件加载本地数据。我只调用一次该函数,但是却多次调用
Main.jsx
import React,{useState} from 'react';
import {
IonApp,IonHeader,IonTitle,IonToolbar,IonContent,IonInput,IonList,IonItem,IonLabel,IonButton
} from '@ionic/react';
import 'capacitor-secure-storage-plugin';
import { Plugins } from '@capacitor/core';
const { SecureStoragePlugin } = Plugins;
const MainPage= () => {
const [username,setUsername]=useState("h");
const [token,setToken]=useState("blah");
const bogusFunctionForAsyncoperations = async () =>
{ console.log("Hello world");
let temp;
let key='username';
temp=await SecureStoragePlugin.get({ key })
.then(value => {
console.log(value.value," Got username from storage at MainPage");
return value;
})
.catch(error => {
console.log('Item with specified key does not exist.');
return ( "Error at MainPage .The key is "+key);
});
setUsername(temp.value);
}
bogusFunctionForAsyncoperations();
return (
<>
<p>Hello {username}! </p>
</>
);
};
export default MainPage;
日志
main.jsx:23 Hello world
main.jsx:28 testuser Got username from storage at MainPage
main.jsx:23 Hello world
main.jsx:28 testuser Got username from storage at MainPage
main.jsx:23 Hello world
main.jsx:28 testuser Got username from storage at MainPage
1。如何解决此问题?
2.是否有更好的方法来做await
而不是将所有await
放在'async'中?
谢谢!
解决方法
将其放入您的React.useEffect
React.useEffect(() => {
bogusFunctionForAsyncOperations();
},[]);
问题出在您的函数在您的第一个渲染中运行之后,它再次更新状态,从而触发了另一个重新渲染,并在那里开始了无限循环。
,将函数调用bogusFunctionForAsyncOperations()
放在useEffect()
内
每当您设置状态时,它就会执行
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。