Reactjs 如何将现有数据从存储区传递到formik?
我有一个钩子组件,它使用Reactjs 如何将现有数据从存储区传递到formik?,reactjs,formik,Reactjs,Formik,我有一个钩子组件,它使用useFormik(),这是我的初始值: const formik = useFormik({ initialValues: {login: '', password: '', inactive: false}, validationSchema: schema, onSubmit: async (values, { resetForm }) => { await dispatch(UserActions.createUse
useFormik()
,这是我的初始值:
const formik = useFormik({
initialValues: {login: '', password: '', inactive: false},
validationSchema: schema,
onSubmit: async (values, { resetForm }) => {
await dispatch(UserActions.createUser(values, resetForm))
},
})
有时此组件已经有数据,因此我尝试在useEffect中检查此项,然后设置initialState:
const userEditing = useSelector(store => store.userStates.userEditing)
const [initialValues, setInitialValues] = useState('')
useEffect(() => {
if (userEditing) {
setInitialValues(userEditing)
} else {
setInitialValues({login: '', password: '', inactive: false})
}
}, []); // eslint-disable-line
然后我试着把这个变量放到初始值中
:
const formik = useFormik({
initialValues: initialValues,
validationSchema: schema,
onSubmit: async (values, { resetForm }) => {
await dispatch(UserActions.createUser(values, resetForm))
},
})
正在输入if()
条件,但我的输入未填充此值
如何将现有数据从存储区传递到formik
这是我的模板:
<Grid item xs={5}>
<TextField
value={formik.values.login}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
helperText={formik.touched.login ? formik.errors.login : ""}
error={formik.touched.login && Boolean(formik.errors.login)}
variant="outlined"
margin="normal"
required
fullWidth
id="email"
label="E-mail"
name="login"
autoComplete="email"
/>
</Grid>
<Grid item xs={5}>
<TextField
value={formik.values.password}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
helperText={formik.touched.password ? formik.errors.password : ""}
error={formik.touched.password && Boolean(formik.errors.password)}
variant="outlined"
margin="normal"
required
fullWidth
type="password"
id="password"
label="Senha"
name="password"
/>
</Grid>
<Grid item xs={2}>
<FormControlLabel
onChange={formik.handleChange}
onBlur={formik.handleBlur}
value={formik.values.inactive}
control={<Switch color="primary" />}
label="Inativo"
labelPlacement="top"
/>
</Grid>
将
启用重新初始化={true}
传递到Formik包装器