Я уже прочитал все вопросы о переполнении стека, связанные с этой проблемой, а также это официальное сообщение о реакции и предпочтительные решения.
Больше не рекомендуется использовать componentWillReceiveProps
!
Прежде чем пометить этот вопрос как дубликат, пожалуйста, поймите мой конкретный вопрос, я не нашел никакого решения для моей конкретной проблемы.
То, что я пытаюсь сделать, очень просто:
У меня есть компонент KInputRange
, который получил значение из реквизита и отправить значение (событие обратного вызова) на событие onEnter (отправит значение для сервера только при вводе)
Значение props.value может случайно меняться (поступая через веб-сокет с сервера)
Мой вопрос :
Внутри моих компонентов атрибут значения <input>
будет получать данные от props
или от state
?
Если из реквизита:
Как я могу обновить значение внутри, когда пользователь вводит данные?
Если из состояния:
Как я могу обновить новое значение, если props.value случайно изменился с сервера?
Мне нужно обновить внутреннее состояние при смене реквизита.
но как это сделать сегодня, если реакция говорит, что это анти-паттерн?
Это мой код:
class KInputRange extends React.Component<any, any> {
constructor(props: any) {
super(props);
}
private onKeyDown(e: any): void {
//If the key is enter call to props.onEnter with the current value
}
private onChange(e: any): void {
//if user change the value- change the internal value
}
public render() {
return (
<input value={?????} type="text" onChange={(e) => this.onChange(e)} onKeyDown={(e) => this.onKeyDown(e)}/>
);
}
}
Использование:
<KInputRange value={this.state.dataFromTheServer} onEnter={(val: number) => this.kInputRangeEnterClicked(val)}/>