如何使用带有 Typescript 的 Axios 为 Formik 设置初始值
How to Set Initial Values to Formik using Axios with Typescript
我刚开始使用 React、Formik 和 Axios,不确定如何通过数据库调用设置表单的初始值。我试过下面的代码片段,但没有成功。我无法在网上找到任何有关如何执行此操作的打字稿示例。
async function getInitialValues() {
try {
const response = await axios.get('http://localhost:53132/api/test');
//console.log(response);
return {
Division_Id: response.Divison_Id,
Year: response.Year,
Cost: response.Cost
}
//console.log(InitialValues);
//return InitialValues;
} catch (error) {
console.error(error);
}
}
<Formik initialValues={getInitialValues()}...
您需要在挂载时发出网络请求(在此示例中使用 "useEffect" 挂钩)。然后将这些值保存到状态(在这里使用 useState 挂钩,但您可以使用 Redux 或您正在使用的任何状态管理工具)。
function NewForm() {
const [initialValues, setInitialValues] = useState();
useEffect(() => {
getInitialValues().then(res => setInitialValues(res);
}, []);
return initialValues ?
<Formik initialValues={initialValues}>content</Formik> :
<span>loading...</span>;
}
那是因为您缺少 useEffect 中的依赖项。添加一个空数组作为依赖项(useEffect 的第二个参数)如果你只想 运行 一次,当页面呈现
function NewForm() {
const [initialValues, setInitialValues] = useState();
useEffect(() => {
getInitialValues().then(res => setInitialValues(res);
}, []);
return initialValues ?
<Formik initialValues={initialValues}>content</Formik> :
<span>loading...</span>;
}
我刚开始使用 React、Formik 和 Axios,不确定如何通过数据库调用设置表单的初始值。我试过下面的代码片段,但没有成功。我无法在网上找到任何有关如何执行此操作的打字稿示例。
async function getInitialValues() {
try {
const response = await axios.get('http://localhost:53132/api/test');
//console.log(response);
return {
Division_Id: response.Divison_Id,
Year: response.Year,
Cost: response.Cost
}
//console.log(InitialValues);
//return InitialValues;
} catch (error) {
console.error(error);
}
}
<Formik initialValues={getInitialValues()}...
您需要在挂载时发出网络请求(在此示例中使用 "useEffect" 挂钩)。然后将这些值保存到状态(在这里使用 useState 挂钩,但您可以使用 Redux 或您正在使用的任何状态管理工具)。
function NewForm() {
const [initialValues, setInitialValues] = useState();
useEffect(() => {
getInitialValues().then(res => setInitialValues(res);
}, []);
return initialValues ?
<Formik initialValues={initialValues}>content</Formik> :
<span>loading...</span>;
}
那是因为您缺少 useEffect 中的依赖项。添加一个空数组作为依赖项(useEffect 的第二个参数)如果你只想 运行 一次,当页面呈现
function NewForm() {
const [initialValues, setInitialValues] = useState();
useEffect(() => {
getInitialValues().then(res => setInitialValues(res);
}, []);
return initialValues ?
<Formik initialValues={initialValues}>content</Formik> :
<span>loading...</span>;
}