[英]Set formik value from a component inside the formik
我正在使用 formik,我有一个可以从自动完成和 formik 内部的组件编辑的输入。
它是这样的:
<Formik
initialValues={endUserLocationEdit}
onSubmit={saveEndUserLocation}
>
{props => {
const {
values,
touched,
errors,
status,
isSubmitting,
validateParcelContainer,
setFieldValue,
handleChange,
handleSubmit,
handleBlur
} = props;
return (<form className="form" onSubmit={handleSubmit}>
<Autocomplete
fullWidth
id="rulLocationFk"
name="rulLocationFk"
value={values.rulLocationFk}
onChange={(event, newValue) => setFieldValue("rulLocationFk", newValue)}
onInputChange={(event, newInputValue) => {
searchLocation(values.locStatePk, newInputValue);
}}
getOptionSelected={(option, value) => value != null ? option.locName === value.locName : null}
getOptionLabel={(option) => option.locName}
options={locationList}
error={errors.locStatePk && touched.locStatePk}
renderInput={(params) => <TextField {...params} label="Location" variant="outlined" />}
/>
<MapCaller > </MapCaller>
正如您在自动完成中看到的,我使用 setFieldValue 来编辑 value={values.rulLocationFk}
好吧,现在在 formik 里面我还有一个可以编辑 values.rulLocationFk 值的组件
我这样称呼formik里面的组件:
<MapCaller > </MapCaller>
我该如何将参数 values.rulLocationFk 传递给 MapCaller,并可以在 MapCaller 内部对其进行编辑?
我认为是这样的:
<MapCaller location={values.rulLocationFk} setLocation={setFieldValue} > </MapCaller>
但这不起作用
谢谢
我同意上面的评论
另一个想法:这并不能完全解决您正在使用的实现,但是我喜欢在 formik 之外使用访问值的快速模式是将 ref 设置为 innerRef 属性,然后您可以使用 ref 访问 formik价值观。
const formikRef = useRef(null)
<Formik
innerRef={formikRef}
initialValues={{
valueName = "",
...
and then you can grab
formikRef.current.values.valueName
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.