我有一个包含一些IonInputs的页面,它们的初始值是用fetch中的数据设置的。我的问题是onIonChange事件在我加载页面时立即触发。更改是调用一个函数,该函数设置一些变量,除非用户手动输入值,否则不应设置这些变量。我确信对于初始页面渲染,离子变化事件不应该被触发,但我在文档或一般搜索中找不到任何信息。谁能告诉我如何在设置值时停止onIonchange事件的发生,或者甚至在渲染之前等待值的设置?请看我下面的代码片段,我去掉了不需要的代码。我用的是React18和离子6
MyPage.tsx
const [person, setPerson] = useState<People>({}as People);
const [addressType, setAddressType] = useState("");
const [employer, setEmployer] = useState<People>({} as People);
useIonViewWillEnter(async()=>{
let person = {} as People;
if(urlParams.get('UUID') != undefined && urlParams.get('UUID') != null ){
person = await getPersonByUUID("" + urlParams.get('UUID'))
localStorage.setItem("ABPerson", JSON.stringify(person))
}
else {
person =JSON.parse(localStorage.getItem("ABPerson") ?? "null") ?? {} as People;
}
let employer = await getPersonByUUID(person?.employeeOf?.toString())
setPerson(person);
setEmployer(employer)
setAddressType(person?.typeString?.toString());
});
return(
<IonPage className="AddressBook">
<IonInput
id="nameInput"
type="text"
className="textInput"
value={person.name}
onIonChange={(e)=>HandleDetailsUpdate("name", e.detail.value)}>
</IonInput>
</IonPage>
)
1条答案
按热度按时间fjnneemd1#
也许这个解决方案适合你:
onIonChange is triggering more than one input on Ionic 5 React
在此期间,我将尝试替换:
执行人:
这将初始化状态变量person为undefined,并且您不会将空对象强制转换为People。