【发布时间】:2021-06-20 16:30:57
【问题描述】:
我正在尝试使用setValues 在函数clearCurrentEntries 中仅清除Formik 表单中的一些键,但无论我做什么,我都会收到错误Too many re-renders. React limits the number of renders to prevent an infinite loop. 我也尝试调用clearCurrentEntries在showInput 函数中,但无论我把它放在哪里,我都会得到相同的重新渲染超出错误。
- 如何清除 Formik 状态下的某些值,但防止应用重新渲染次数过多而引发此错误?
const Container = () => {
const emptyObj = {
first_name: '',
last_name: '',
middle_name: '',
}
const clearCurrentEntries = (values, setValues) => {
setValues({ ...values, ...emptyObj })
}
const showInput = (values) => {
const msOptions = ['one', 'two', '']
const ms = values?.status?.toLowerCase()
const show = msOptions.every((option) => ms !== option)
return show
}
return
<div>
<Formik
enabledReinitialize={true}
initialValues={formStructure}
onSubmit={handleSubmit}>
{({ handleChange, handleSubmit, values, setFieldValue, setValues }) => {
return (
<Form onSubmit={handleSubmit} >
<div className="form-content">
<Form.Group>
<Form.Label>Status</Form.Label>
<Form.Control
as="select"
id={'status'}
name={'status'}
value={values?.status}
onChange={handleChange}>
<option value="">Select...</option>
{statusOptions.map((option) => (
<option key={option} value={option}>
{option}
</option>
))}
</Form.Control>
</Form.Group>
{showInput(values) ? (
<CurrentInputs />
) : (
clearCurrentEntries(values, setValues)
)}
</Form>
)
}}
</Formik>
</div>
)
}
export default Container
【问题讨论】:
标签: reactjs formik next rerender