Глядя на ваш код, кажется, что вы неправильно обращаетесь к объекту. Ваши условия были errors.line1 && touched.address.line1
, но должны быть errors.address && errors.address.line1 && touched.address.line1
.
Ваша ошибка произошла из-за того, что error.address сначала не существует, так как ошибки - это пустой объект в начале. Вы можете проверить это по console.log(errors)
.
Я попытался использовать этот кусок кода, и он работает. (https://codesandbox.io/s/4w83767610?fontsize=14)
<Form>
<Field name="firstName" placeholder="first Name" />
{errors.firstName && touched.firstName ? (
<div>{errors.firstName}</div>
) : null}
<br />
<Field name="address.line1" placeholder="line 1" />
// changed the conditional and object access
{errors.address && errors.address.line1 && touched.address.line1 ? (
<span className="red">{errors.address.line1}</span>
) : (
""
)}
<br />
<button type="submit">Submit</button>
</Form>