AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"

Необязательная передача props в реакт?

Допустим, есть какая-то форма, а в ней поля
<Input onNameChange={this.props.onNameChange} title={"Name"} type={'text'}/>
<Input title={"Surname"} type={'text'}/>

через onNameChange передаю наверх состояние, при этом в компоненте Input:
<label>
                    <p>{this.props.title}</p>
                    <input onChange={this.handleChange} type={this.props.type}/>
 </label>

Проблема в том что мне нужно передавать обработчик изменения только на некоторые поля, на другие нет, так получается, что при изменении поля Surname получаю ошибку. Как сделать так что бы onChange у input вызывался тогда когда я передам обработчик?
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 2
@turiq
onChange =(name)=> this.props.onNameChange && this.props.onNameChange(name)
Ответ написан
WblCHA
@WblCHA
Тебе надо, чтобы в onChange был андефайнд.
В функциональном компоненте такая проблема даже не возникает:
const Input = ({ title, type, onNameChange }) => (
  <label>
    <p>{title}</p>
    <input onChange={onNameChange} type={type} />
  </label>
)


П.с.: надеюсь, ничего не напутал, а то реакт редко использую.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы