Javascriptの6つの方法、react、es6&es7のこのキーワード
キーポイント
- JavaScriptの
this
キーワードは、特にコールバック関数内で混乱を招く可能性があります。 reactでは、this
コンポーネントのコンテキストを参照します。これは、関数コンテキストがシフトすると問題を引き起こす可能性があります(例:Promise Callbacks)。 バインディングを管理するためのいくつかの方法が存在します:トップレベルの参照(Alias this)の作成、実行時に正しいコンテキストを注入(これを結合)、ES2015矢印関数を使用してReactコンポーネントメソッドを活用し、ES2016を使用します構文を結合する(サポートされている場合)、または明示的な - 引数を受け入れるメソッドを使用します。
this
最適な方法は、パフォーマンス、デバッグの容易さ、個人的な好みなどの要因に依存します。 エイリアシングthis
はパフォーマンスを優先します。コンポーネントメソッドまたは名前付き関数は、デバッグを改善します。矢印関数は、短いインライン関数の場合は簡潔です。this
- javascriptの
this
キーワードは、頻繁に開発者をつまずかせます。厳格なクラスモデルを持つ言語とは異なり、その動作は常に予測可能ではありません。特に、コールバック機能がコントロールを超えているコールバック関数です。 外部コードは、 または
呼び出しをもたらします。 問題this
new
コンポーネントコンテキストを参照するためのFunction.prototype
の使用の使用は、このあいまいさを継承します。 この一般的な反応パターンを考慮してください:.bind(this)
これはa this
を生成します。
this.setState({ loading: true }); fetch('/').then(function loaded() { this.setState({ loading: false }); });
TypeError
これらのソリューションは、確立されたJavaScript技術から、反応固有の方法や新しい(潜在的にサポートされていない)機能にまで及びます。
this.setState
this
1。エイリアスこれは
長年のアプローチには、コンポーネントのトップレベルで2番目の
参照を作成することが含まれます。 シンプルで理解しやすい、これは正しいコンテキストの明確な視覚的保証を提供します。直感に反するように見えますが、それは効果的で簡単です。
this
2。これをバインドします
const component = this; component.setState({ loading: true }); fetch('/').then(function loaded() { component.setState({ loading: false }); });
このメソッドは、実行時に正しいコンテキストをコールバックに注入します:
すべてのJavaScript関数には、を指定するメソッドがあります。 バインドされると、コンテキストをオーバーライドすることはできず、正しいオブジェクトを参照することを確認します。 ただし、このアプローチは読みやすくなく、深くネストされた非同期コードで面倒になり、各機能の手動バインディングが必要です。
3。コンポーネントの反応
Reactコンポーネントにより、this
を使用すると、正しいReact.createClass
コンテキストに自動的にバインドされるメソッドを定義できます。 これにより、コールバックロジックをコンポーネントに移動することができます:
this.setState({ loading: true }); fetch('/').then(function loaded() { this.setState({ loading: false }); });
シンプルなコンポーネントの場合、これによりクリーンなコードが促進され、コンテキストの懸念が排除されます。 このオート凝視は.bind(this)
4。 ES2015矢印関数
es2015矢印関数()は簡潔であり、それらの囲いの範囲から=>
this
const component = this; component.setState({ loading: true }); fetch('/').then(function loaded() { component.setState({ loading: false }); });
this
5。 ES2016 Bind Syntax(Proposal)
提案されたES2016(ES7)BIND構文はを使用して、関数を特定の
値にバインドします。 たとえば、
::
this
興味深いものの、この構文は広くサポートされておらず、
this.setState({ loading: true }); fetch('/').then(function loaded() { this.setState({ loading: false }); }.bind(this));
6。メソッド固有のアプローチ.bind(this)
引数を渡すことを許可します(例えば、の最終的な引数):
これは一貫性がありません。ほとんどの関数にはこの機能がありません。this
map
React.createClass({ componentWillMount: function() { this.setState({ loading: true }); fetch('/').then(this.loaded); }, loaded: function loaded() { this.setState({ loading: false }); } });
コンテキストを管理するための複数のアプローチが存在します。 エイリアスでパフォーマンスに優先順位を付け、コンポーネントメソッドまたは名前付き関数で簡単にデバッグし、短いインラインコードの矢印関数と簡潔にします。 最良の選択は、優先順位とコーディングスタイルに依存します。 読みやすさと保守性を妨げる過度に複雑なソリューションを避けてください
よくある質問(FAQ)
this
(FAQは、元のテキストで大部分がカバーされており、この包括的な応答の長さを大幅に増やすため、簡潔に省略されています。元のFAQは、このトピックの優れたカバレッジを提供します。 >
以上がJavascriptの6つの方法、react、es6&es7のこのキーワードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます
