У меня есть компонент MsgInput
с textarea
, который onKeyUp
запускает функцию обработчика. Внутри функции обработчика я пытаюсь читать реквизиты с помощью this.props
, но не уверен, почему здесь реквизит не определен. Конечно, workaroud должен использовать .Этот объект в React Component с использованием классов ES6
export class MsgInput extends React.Component {
constructor(props) {
super(props);
}
inputHandler(e) {
if(e.keyCode == 13 && !e.shiftKey) {
this.props.onNewMessage({content: e.target.value});
e.target.value = '';
e.preventDefault();
}
}
render() {
return (
<div className="controls">
<textarea onKeyDown={this.inputHandler.bind(this)} className="msg-input" placeholder="Write something" disabled={!this.props.auth}></textarea>
</div>
);
}
}
Возможная Дубликат [Undefined не является объектом оценки this.state/this.props] (http://stackoverflow.com/questions/40774399/undefined-is-not-an-object-evaluating-this -state-this-proc) – Pineda
Если вы все равно используете трансформацию, посмотрите декоратор '@ autobind': https://www.npmjs.com/package/core-decorators#autobind –