gpt4 book ai didi

reactjs - 通过 API 调用设置表单的初始值

转载 作者:行者123 更新时间:2023-12-04 02:33:16 25 4
gpt4 key购买 nike

在我的 React 游戏中,我将一个名为 Formik 的 React 库用于表单。
在其中,您可以像这样设置表单的初始值:

<Formik
initialValues={{
characterClasses: ["1", "3", "9"],
race: "Elf",
name: "Derolt",
age: "84",

..etc

但是现在,我想从 API 调用中加载初始值。
所以我创建了这个:
const fetchGameCharData = async (gameId) => {
const game = await axios("api/games/" + gameId);
// return the result
return game;
};
我的问题是,我不知道如何使用上面的 fetch 方法来实际填充 Formik 使用的 initialValues 部分。
有没有人做过这个?
谢谢!

最佳答案

使用 conditional-rendering方法。
仅在您从 API 调用获得响应后加载您的表单。显示loading...或定制 spinner直到您收到 API 响应。

With this approach, your form directly load with initial values without any flickering of having no values at first load and values comes up in a flash as a result of API response.


编辑
// In your state add two values like
initialValues: [],
isValueLoded: false

...

// Make your API call in `componentDidMount`
componentDidMount() {
// Call your API
fetchGameCharData(....).then(res => {
this.setState({ isValueLoded: true, initialValues: res.values});
}).catch(err => ....);
}

....

// In your render method
render() {

return !this.state.isValueLoded ?
(<div>Loading...</div>) : (
<Formki
values={this.state.initialValues}
....
/>
);
}

关于reactjs - 通过 API 调用设置表单的初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62959574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com