Я пытаюсь создать мастер форм. Я настроил мастера через react-router
и использовал formik
для форм. Теперь я столкнулся с проблемой при создании настраиваемой радио-кнопки. Для этого я использовал библиотеку react-custom-radio
.
Когда я использую радио-кнопки вне маршрутов, они работают как надо (код внизу поста).
Когда я использую с маршрутизатором, реквизиты передаются дочернему компоненту:
<Route path="/form/location" render={(props) => (<Pricing {...props} />)} />
Внутри дочернего компонента я обращаюсь к реквизиту таким же образом, как я делал это в родительском компоненте, где он работал.
const Pricing = (props) => {
const {
values,
touched,
errors,
setFieldValue,
setFieldTouched,
} = props;
return (
<div>
<MyRadio
value={values.car}
onChange={setFieldValue}
onBlur={setFieldTouched}
error={errors.car}
touched={touched.car}
/>
</div>
);
}
Но теперь я всегда получаю ошибку Cannot read property 'car' of undefined
.
Почему не работает, если между ними есть роутер?
Если я так делаю, это работает:
<Form>
<Switch>
<Redirect from="/" exact to="/form/location" />
<Route path="/form/location" render={(props) => (<Pricing {...props} />)} />
</Switch>
<MyRadio
value={values.car}
onChange={setFieldValue}
onBlur={setFieldTouched}
error={errors.car}
touched={touched.car}
/>
</Form>