2 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果您希望輸入的值在更改時(shí)更改initialValues,則需要將Formikprop enableReinitializeas傳遞給組件true。
因此,您需要在代碼中更改的是將 propTabsForm.js傳遞給您的組件FormenableReinitialize
<Form
enableReinitialize
initialValues={initialValues}
onSubmit={onFormSubmit}
formRef={formRef}
>
<FieldWrapper>
<MoneyBox name="input" currencySymbol={"£"} />
</FieldWrapper>
</Form>
在您Form.js將道具傳遞給Formik組件時(shí)
const Form = ({
formRef,
children,
initialValues,
validationSchema,
onSubmit,
enableReinitialize
}) => {
return (
<FormikWithRef
enableReinitialize={enableReinitialize}
validateOnChange={true}
validateOnBlur={true}
initialValues={initialValues}
validationSchema={validationSchema}
onSubmit={onSubmit}
ref={formRef}
>
{(props) => <form onSubmit={props.handleSubmit}>{children}</form>}
</FormikWithRef>
);
};
我不太確定您的業(yè)務(wù)邏輯應(yīng)該如何工作,但這是一個(gè)包含上述更改的工作示例。

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
它被稱為initialValues,那么為什么您希望它在您更改它時(shí)更新表單值呢?(但是你可以通過使用 prop 來要求它這樣做enableReinitialize,正如@Vencovsky 在另一個(gè)答案中提到的那樣。)
要將您想要的值(value.input在easy-peasy商店中)綁定到 formik 輸入,您可以使用:
const [field, meta, helpers] = useField(props);
useEffect(() => {
helpers.setValue(value.input)
}, [value])
每次value店內(nèi)更改時(shí),它都會更新 formik 輸入字段的值。
并且要更改存儲狀態(tài)的值,您可以使用設(shè)置選項(xiàng)卡的方式。(使用easy-peasy商店。)
在 中的第 49 行Tabs.js,它會在單擊選項(xiàng)卡時(shí)更新值。
在 中的第 19 行Input.js,它將輸入值綁定到您的存儲狀態(tài)。
添加回答
舉報(bào)