Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何将现有数据从存储区传递到formik?_Reactjs_Formik - Fatal编程技术网

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包装器