ホームページ >ウェブフロントエンド >jsチュートリアル >ReactとFluxを使用してアプリを取得するメモを作成します
Reactは、ユーザーインターフェイスを作成するための非常に素晴らしいライブラリです。唯一の問題は、Reactがアプリケーションがデータをどのように処理するかを気にしないことです。ほとんどの人は、MV*のVとしてReactを使用します。そこで、FacebookはFluxというパターンを導入しました。これは、アプリ内のデータ処理に機能的なアプローチをもたらします。このチュートリアルでは、フラックスパターンに関する簡単な紹介と、ReactおよびFluxアーキテクチャを使用してアプリを使用してメモを作成する方法を示しています。
キーテイクアウト
Notestoreは、データが変更されるたびにイベントをトリガーします。 NotelistComponentによると、Reactコンポーネントはこのイベントに耳を傾け、ビューに表示されるメモのリストを更新します。これが、データがストアから流れる方法です。
フラックスパターンの最大の利点は、アプリケーションデータをフラットに保つことです。突然変異はアクションを通じてのみ行うことができるため、データの変更がアプリケーション全体にどのように影響するかを理解するのは簡単です。
注:
Facebookのフラックスガイドを使用した場合、ディスパッチャーの概念に気付いたかもしれません。ディスパッチャーは、店舗へのコールバックのレジストリです。アクションが呼び出されると、ディスパッチャーはそれに応答し、関連するデータをすべての登録店に送信します。その後、ストアはアクションタイプを確認し、それに応じてタスクを実行します。
上記のプロセスは、逆流と呼ばれるライブラリによって大幅に簡素化されています。アクションを聞くことができるようにすることにより、ディスパッチャの概念を削除します。したがって、逆流の店では、アクションを直接聴き、呼び出しに応答できます。
フラックスパターンを完全に理解するには、逆流、反応、およびnode.js.を使用してアプリを撮影する簡単なメモを作成しましょう。 開発環境のセットアップ
Browserifyを使用して、Reactコンポーネント、アクション、ストアをクライアント側の.JSパッケージにバンドルアップします。
Grunt Watchを使用して、上記のコンポーネントの変更を検出し、変更が発生するたびにBrowserifyを再実行します。grunt watch grunt nodemon
アプリで作業しています
アプリのさまざまなコンポーネントから始めましょう。 UIをさまざまなコンポーネントに分割する方法は次のとおりです。
refrux.createactionsは、アクションを作成するために使用されます。これらのアクションをコンポーネントで使用するためにエクスポートします。
ストアの作成grunt watch grunt nodemon
ノートストアと呼ばれる単一のストアがあり、一連のメモを維持しています。次のコードは、ストアの作成に使用されます(store/notestore.js):
すべてのReactコンポーネントは、React/コンポーネントディレクトリにあります。私はすでにUIの全体的な構造を示しています。ダウンロードしたソースコードをチェックして、各コンポーネントについて詳しく知ることができます。ここで重要なことを紹介します(つまり、コンポーネントがアクションを呼び出してストアと対話する方法)。
<span>var Reflux = require('reflux'); </span> <span>var NoteActions = Reflux.createActions([ </span> <span>'createNote', </span> <span>'editNote' </span><span>]); </span> module<span>.exports = NoteActions;</span>noteListbox:
このコンポーネントは、Notestoreからノートのリストを取得し、ノートリストコンポーネントに送信し、メモをレンダリングします。コンポーネントがどのように見えるかは次のとおりです
したがって、コンポーネントの変更メソッドが変更されるたびに呼び出されます。この方法は、更新されたメモリストを受け取り、状態を変更します。
this.state.notesはノートリストへの小道具として渡されます。
<span>var Reflux = require('reflux'); </span><span>var NoteActions = require('../actions/NoteActions'); </span> <span>var _notes = []; //This is private notes array </span> <span>var NoteStore = Reflux.createStore({ </span> <span>init: function() { </span> <span>// Here we listen to actions and register callbacks </span> <span>this.listenTo(NoteActions.createNote, this.onCreate); </span> <span>this.listenTo(NoteActions.editNote, this.onEdit); </span> <span>}, </span> <span>onCreate: function(note) { </span> _notes<span>.push(note); //create a new note </span> <span>// Trigger an event once done so that our components can update. Also pass the modified list of notes. </span> <span>this.trigger(_notes); </span> <span>}, </span> <span>onEdit: function(note) { </span> <span>// Update the particular note item with new text. </span> <span>for (var i = 0; i < _notes.length; i++) { </span> <span>if(_notes[i]._id === note._id) { </span> _notes<span>[i].text = note.text; </span> <span>this.trigger(_notes); </span> <span>break; </span> <span>} </span> <span>} </span> <span>}, </span> <span>//getter for notes </span> <span>getNotes: function() { </span> <span>return _notes; </span> <span>}, </span> <span>//getter for finding a single note by id </span> <span>getNote: function(id) { </span> <span>for (var i = 0; i < _notes.length; i++) { </span> <span>if(_notes[i]._id === id) { </span> <span>return _notes[i]; </span> <span>} </span> <span>} </span> <span>} </span><span>}); </span> module<span>.exports = NoteStore; //Finally, export the Store</span>最後に、componentwillunmount内にunsubscribe()を書き込み、リスナーを削除します。
だから、これはノーチリストが常にStoreの変更イベントを聞くことで最新の状態を維持する方法です。次に、メモがどのように作成/編集されているかを見てみましょう
notecreationbox:次のNoteCreationBoxの方法をご覧ください:
grunt watch grunt nodemonこのメソッドは、[保存]ボタンがクリックされるたびに呼び出されます。 NoteTextを最初のパラメーターとして受け入れます。 IDが2番目のパラメーターとして渡された場合、これは編集操作であることがわかり、アクションnotions.editnote()を呼び出します。 それ以外の場合は、新しいメモのIDを生成し、noteactions.createNote()を呼び出します。これらのアクションに耳を傾けているNotestoreを覚えておいてください。アクションに応じて、適切なストアコールバックが実行されます。データが変異すると、ストアは変更イベントをトリガーし、コンポーネントノートリスト自体が更新されます。
これは、データがシステムに流れ込み、その後フラックスベースのアプリケーションで外出する方法です。
なぜサーバーでReactを使用するのかなぜ私がサーバーにReactと逆流を使用したのか疑問に思うかもしれません。 Reactのクールな機能の1つは、コンポーネントをクライアントとサーバーの両方でレンダリングできることです。この手法を使用して、サーバー上でレンダリングされ、単一ページアプリとして動作する同型アプリを作成できます。これはメモアプリには必要ないかもしれませんが、このセットアップを使用して、将来複雑な同型アプリを構築することができます。
読んでくれてありがとう!
反応とフラックスを備えたメモを取るアプリの作成に関するよくある質問
Reactを使用してノートテイキングアプリを作成する際のフラックスの役割は何ですか?
フラックスアーキテクチャは、明確で予測可能なデータフローを提供することにより、ノートテイキングアプリのスケーラビリティを維持するのに役立ちます。これにより、アプリは複雑さで成長するにつれて、アプリを理解し、変更しやすくなります。一方向のデータフローにより、アプリの一部の変更が他の部分に予期せず影響を与えないようにし、バグの可能性を減らし、アプリのテストとデバッグを容易にすることができます。 ReactとFluxを使用したノートテイキングアプリ?
反応とフラックスで構築されたノートテイキングアプリをデバッグするにはどうすればよいですか?反応とフラックスを使用して、さまざまなツールを使用して行うことができます。 ChromeおよびFirefoxのReact Developer Tools Extensionを使用すると、Reactコンポーネントの階層、小道具、および状態を調べることができます。フラックスをデバッグするには、アクションを記載してコンソールの変更を記入することも、フラックスの実装としてReduxを使用している場合はRedux DevToolsなどのツールを使用できます。
はい。たとえば、NavigationにReact Routerなどのルーティングライブラリ、テスト用のJestなどのテストライブラリ、またはアプリをスタイリングするためのMaterial-UIのようなUIライブラリを使用する場合があります。ライブラリまたはフレームワークの選択は、特定のニーズと好みに依存します。
以上がReactとFluxを使用してアプリを取得するメモを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。