<Form.Field>
<label>Rua</label>
<input name='endereco.rua' value={user.endereco.rua} onChange={(e)=>handleInputChange(e)} placeholder='Insira sua Rua' />
{errors.endereco.rua !== '' && <ErrorMessage>{errors.endereco.rua}</ErrorMessage>}
</Form.Field>
<Form.Field>
<label>Numero</label>
<input name='endereco.numero' type='number' onChange={(e)=>handleInputChange(e)} placeholder='Insira seu numero' />
{errors.endereco.numero !== undefined && <ErrorMessage>{errors.endereco.numero}</ErrorMessage>}
</Form.Field>
export interface Errors{
name?: string;
password?: string;
email?: string;
cpf?: string;
endereco?: {
cep?: string;
cidade?: string;
bairro?: string;
rua?: string;
numero?: string;
}
}
如何停用此选项或解决问题?只是现在它给了我这个错误。谢谢!
错误:打字稿TS2532-对象可能未定义。
答案 0 :(得分:1)
我们不知道您的特定类型,但是大概errors
或endereco
可能是undefined
。您可以通过以下方式处理该问题:
{errors && errors.endereco && <ErrorMessage>{errors.endereco.rua}</ErrorMessage>}
如果您还想检查属性本身是否不是undefined
(类似于您目前的做法),只需将其添加到链中:
{errors && errors.endereco && errors.endereco.rua && <ErrorMessage>{errors.endereco.rua}</ErrorMessage>}
基本上,如果该链上的任何值为undefined
,则它将短路&&
条件,并且在那里不会呈现任何内容。但是,如果定义了所有值,则将呈现<ErrorMessage/>
元素。