私はtextarea
とMsgInput
コンポーネントを持っていますonKeyUp
は、ハンドラ関数をトリガします。ハンドラ関数の中で、私はthis.props
を使って小道具を読むことを試みますが、なぜ小道具がここで定義されていないのか分かりません。もちろん、作業場はです。このオブジェクトは、レスキューコンポーネントES6クラスを使用して
答えて
ES6クラスに反応すると、コールバックがコンポーネントインスタンスに自動的にバインドされないため、既に行ったように自分で行う必要があります。それ以外の場合は、this
はコールバックで使用できません。
this.inputHandler.bind(this)
これは周りの仕事が、可能になっている方法ではありません。
もう1つの方法は、自動的にthis
をバインドするES6矢印機能を使用することです。
<textarea onKeyDown={(e) => this.inputHandler(e)}></textarea>
警告:あなたJSX内.bind
または矢印の機能を使用するには、すべてのパフォーマンスの障害となっているレンダリングの新しい関数を作成します。
最後の手段として、矢印関数のパフォーマンス上のペナルティを持たないコンストラクタ内のメソッドをバインドできます。
constructor(props) {
super(props);
this.inputHandler = this.inputHandler.bind(this);
}
と矢印機能用のデコレータ。バインドの呼び出しは私にとって面倒だった –
良い、ありがと; ;-)それは物事をクリアする場合は、答えを受け入れることができます。 – lustoykov
すべてのレンダリングで新しい関数を作成するのはなぜですか?私はむしろ 'コンストラクタ'の中に '.bind'をしたいと思います。 –
- 1. ES6クラスは、ここでは、この
- 2. どのように通常ES6クラスを使用してバベルとES6
- 3. ES6クラスを使用しているときの約束
- 4. 私はインポートを使用してES6クラスにrangesliderをインポートしようとしていますES6インポート
- 5. ES6マップのキーとしてArrayオブジェクトを使用
- 6. ES5コードでのES6クラスの使用
- 7. ダイナミックディスパッチは、このクラスを使用して
- 8. ReduxでES6クラスを使用する
- 9. ES6:クラスをモジュールとして使用する
- 10. ES6クラスは関数のオブジェクトを追加します
- 11. Express + NodeJSアプリケーション用のコントローラのES6クラスまたはオブジェクトリテラルの使用
- 12. ES6クラスは47
- 13. 次のようにES6クラスでES6クラス
- 14. ES6クラス(React.Componentを拡張)ではなくReact.createClassを使用していますか?
- 15. ES6クラスを使用したAJAXのカプセル化
- 16. ES6は、オブジェクト
- 17. マップを使ってes6の新しいオブジェクトを返します
- 18. ES6:JSゲッターとセッターを使用したオブジェクトとそのプロパティ
- 19. ES6クラスを使用してポリマー要素を作成しますか?
- 20. ES6クラスとmodule.exportsは
- 21. オブジェクトスプレッド演算子(ES6、JavaScript)を使用して複数のオブジェクトを追加する
- 22. Immutable.jsをES6クラスで使用する方法は?
- 23. 2つ以上のJavaScript ES6クラスをインスタンス化して使用する
- 24. 外部モジュールをES6クラスのインスタンス変数として使用する
- 25. ES6クラスのネストメソッド?
- 26. angularjsのES6クラス
- 27. エラーJSONオブジェクトをJavaScript ES6テンプレートリテラルで使用しようとしています
- 28. このES6コードES6
- 29. JavascriptをES6オブジェクト
- 30. ES6でのクラスの導入は、オブジェクト作成をどのように変更し、クラスを使用するリアクションなどのフレームワークはどうでしょうか?
の可能な重複[未定義はthis.stateを評価する目的ではない/ this.props](http://stackoverflow.com/questions/40774399/undefined-is-not-an-object-evaluating-this -state-this-props) – Pineda
トランスフォームを使用している場合は、 '@ autobind'デコレータを確認してください:https://www.npmjs.com/package/core-decorators#autobind –