今回は、これに反応イベントをバインドするいくつかの方法を紹介します。反応イベントをこれにバインドするための注意事項は何ですか?実際のケースを見てみましょう。
React コンポーネントでは、各メソッドのコンテキストはコンポーネントのインスタンスを指します。つまり、これは現在のコンポーネントに自動的にバインドされ、React はこの参照もキャッシュして CPU とメモリを最大化します。 es6 クラスまたは純粋な関数を使用する場合、この自動バインディングは存在しなくなり、このバインディングを手動で実装する必要があります
React イベント バインディングは DOM イベント バインディングに似ていますが、違いは次のとおりです:
1.React イベントには名前が付けられます。キャメルケースで、DOM イベント名は小文字です
2. jsx を通じて、string の代わりに関数をイベント ハンドラーとして渡します。
3. React イベントは false を返してデフォルトのイベントを防ぐことはできません。明示的にPreventDefault() を呼び出す必要があります。
以下の例:
<a href="#" onclick="console.log('The link was clicked.'); return false"> Click me </a> class ActionLink extends React.Component { constructor(props) { super(props); } handleClick(e) { e.preventDefault(); console.log('The link was clicked.'); } render() { return ( <a href="#" onClick={this.handleClick.bind(this)}>Click Me...</a> ); } }
ps: React コンポーネント クラスのメソッドは、デフォルトではこれをコンポーネント インスタンスにバインドしません。手動でバインドする必要があります。
以下にいくつかのバインディングメソッドを示します:
bindメソッド
直接バインディングはbind(this)ですが、これが引き起こす問題は、バインドがレンダリングされるたびに再バインドされることです。
コンストラクター内部バインディングこれをコンストラクター内でバインドするだけで済み、レンダリングのたびに再バインドする必要がなく、関数が別の場所で再利用されるという利点があります。
class Home extends React.Component { constructor(props) { super(props); this.state = { }; } del(){ console.log('del') } render() { return ( <p className="home"> <span onClick={this.del.bind(this)}></span> </p> ); } }
::パラメータを渡すことはできませんパラメータを渡さない場合は、二重コロンを使用できます
class Home extends React.Component { constructor(props) { super(props); this.state = { }; this.del=this.del.bind(this) } del(){ console.log('del') } render() { return ( <p className="home"> <span onClick={this.del}></span> </p> ); } }
アロー関数バインディングアロー関数はSugar関数の構文だけではありません' とすると、この
関数スコープ を定義する this も自動的にバインドされます。これ以上バインドする必要がないからです。 class Home extends React.Component {
constructor(props) {
super(props);
this.state = {
};
}
del(){
console.log('del')
}
render() {
return (
<p className="home">
<span onClick={::this.del}></span>
</p>
);
}
}
推奨読書:
JSはQRコードを生成しますJSはWeChat IDのランダムな切り替えを実装しますString.prototype.format 文字列スプライシングの使用方法以上がこれに反応イベントをバインドするいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。