削減()、フィルタ()、)(マッピング、いくつかの()、すべての()、...プロパティを展開

ES5、ES6構文属し、これらの概念の性質を展開し、HTTPSでの非接触直接私たちと一緒に+ Reduxのを反応させるために...、軽減()、フィルタ()、マップ()、いくつかの()は、すべての():/あなたは、関連するAPIドキュメントを検索することができ/developer.mozilla.org/en-US/。

しかし、これらの公式Reduxの例は、文法の使用に含まれている、私たちはプログラムの構文を学ぶことができます。ここでは、すべてのデフォルトES6の文言。


これは、公式todomvcの例はある(https://github.com/lewis617/react-redux-tutorial/tree/master/redux-examples/todomvc):

低減()
アレイ、トリガーの後ろに各要素コールバック関数を横切る、戻り値は累積計算されています。

コンポーネント/ MainSection.js 62行

constのcompletedCount = todos.reduce((回数、TODO)=>
?todo.completed数+ 1:カウント
0

ドスは配列で、(減らす)最初のパラメータ、すなわちAコールバック関数、矢印の構文れるコールバック関数(ここでは0に初期化される)の値を返し、最初のパラメータは、2番目のパラメータは電流であります要素の値。第二のパラメータの削減()、初期値(必ずしも)である(ここでカウント)要素の値を初期化

ドス・アレイ、カウントが0である、TODOのドスが最初であり、戻り値または定数を追加する最初の値を横断します。(条件1:?2結果三項演算子を結果)

ドス・アレイ、戻り値としてカウント、TODOのドスが第二である第2の値を横切る、または定数値を返す加えました。

......

終了を横断した後、あなたは配列を取得することができ、完成プロパティは、完了したタスクの数である数の真実です。

フィルタ()
判定することにより、アレイ、バックトリガーの各要素のコールバック関数を横切る現在のアイテムを保持または削除、および新たな配列を返しします。

名前が示すように、フィルタです。

減速/ 24はtodos.js行

state.filterリターン(TODO =>
todo.id!== action.id

状態アレイは、矢印は、唯一のパラメータであるTODO機能、すなわち各配列タスク、フィルタ()のみ1つのパラメータが存在するです矢印その判決文の背後にある主要な要素、現在の項目が保持されている場合はtrueを返し、そうでない場合は、現在の項目を削除します。

一部の学生は、todo.idを聞いてきます!なぜが矢印の構文の関数である== action.id、前に返していませんでした、矢印は、入力と出力の両端にある、ない書き込みの復帰を行います。ES5の文言がある場合:

state.filterリターン(関数(TODO){
  戻りtodo.id!== action.id
  }

コード・セグメントの動作は、指定されたタスクID番号など、アレイタスクを濾過します。タスクの新しい配列を返します。

()マップ
アレイを横断する、バックトリガーの各要素計算することによって、コールバック関数が、新しい現在の項目、および戻り新しい配列を返します。

減速/ 29はtodos.js行

state.mapリターン(TODO =>
?todo.id === action.id
Object.assign({}、TODO、{テキスト:action.text}):
TODO

矢印次の値は、三項演算子であり、すなわちリターンの新要素。IDが一致すると、()新しい複合属性Object.assign、TODOを追加したり、テキスト属性、属性値action.textを書き換えることである場合。

最初のパラメータObject.assign()はターゲットであり、目標は、第3番目以降の引数はソースのコピーである供給源である、jQueryのプラグイン伸びるようではないですか?

コードの役割は、textプロパティの更新配列のタスクに割り当てられています。

いくつかの()、すべての()
アレイを横切る、トリガーの後ろに各要素のコールバック関数は、決定することによって、ブール値を返します。いくつかは、()限り決意があるとして満足している、それはtrueを返す、すべての()長い決意が満たされていないが存在する限り、それはfalseを返します。

コンポーネント/ MainSection.js 19行

constのatLeastOneCompleted = this.props.todos.some(TODO => todo.completed)
配列タスクは、タスクの属性を完了した横断することは事実である、それはtrueを返します。

減速/ 43はtodos.js行

CONST areAllMarked = state.every(TODO => todo.completed)
タスクのアレイを横断するように、各タスクの完了プロパティが真である場合に真を返します。

...プロパティ展開
減速を/ 20行をtodos.js

コピーコード
リターン[
{
ID:state.reduce((MAXID、TODO)=> Math.max(todo.id、MAXID)、-1)+ 1、。
完了:falseに、
テキスト:action.text
}、
...状態
]
コードのコピー
現在の配列に各項目の拡張状態のアレイを

コンポーネント/ MainSection.js 72行

<TodoItemキー= {todo.id} TODO = {TODO} {...}アクション/>
アセンブリに各属性アクションを展開し、小道具は、最終的に取得することができます。

おすすめ

転載: www.cnblogs.com/dillonmei/p/12650657.html