ホームページ  >  記事  >  ウェブフロントエンド  >  redux-sagaでのtakeの使い方を詳しく解説

redux-sagaでのtakeの使い方を詳しく解説

亚连
亚连オリジナル
2018-06-04 10:33:532237ブラウズ

今回はredux-sagaのtakeの詳しい使い方を中心に紹介しますので、参考にしてください。

この記事では、redux-saga での take の使い方を詳しく説明し、皆さんに共有します。詳細は次のとおりです:

長い間研究してきた API の使用方法を紹介します。 redux-sagaで有効なtake APIを使う ほとんどがcall、put、selectですが、takeは普段使う機会がなく、とにかく書いたのでどこで使うのかわかりません。 redux-saga によると、37 21 に関係なく、その使い方があるはずです。

最初にその使い方を見てみましょう:

take

take のパフォーマンスは takeEvery と同じです。特定のアクションですが、takeEvery とは異なり、アクションが実行されるたびにトリガーされるわけではありません。実行シーケンスが take ステートメントに到達すると、対応するアクションが実行されます。

ジェネレーターで take ステートメントを使用してアクションを待機する場合、ジェネレーターはブロックされ、アクションが配布されるのを待ってから実行を続行します。

takeEvery は各アクションをリッスンして、処理関数を実行するだけです。 takeEvery は、いつどのように応答するかを制御できません。

しかし、take は異なります。アクションにいつ応答するか、アクションがトリガーされた後に何をするかをジェネレーター関数で決定できます。

最大の違い: take は実行フローに到達したときにのみ対応するアクションに応答しますが、takeEvery は登録されたアクションに応答します。

上記のコード:

effects: {
 * takeDemo1({payload}, {put, call, take}) {

 },
 * takeInputChange({payload}, {put, call, take,takeEvery,takeLatest}) {
  // yield call(delay,1000);
  console.log(takeEvery);
  // for (let i = 0; i < 3; i++) {
   const action = yield take(&#39;takeBlur&#39;});
   console.log(action, &#39;action&#39;);
   console.log(payload.value);
  // }

 },
 * takeBlur() {
  console.log(323)
 },
}
changeHandle(e){
 this.props.dispatch({type:&#39;takeInputChange&#39;,payload:{value:e.target.value}})
}
blur(){
 this.props.dispatch({type:&#39;takeBlur&#39;})
}
render() {

 return (
  <p style={{position: &#39;relative&#39;}}>
   <Input onChange={this.changeHandle.bind(this)} onBlur={this.blur.bind(this)}/> 
  </p>
  )
}

ページ上に 2 つのメソッドにバインドされた入力があります。1 つ目は onchange メソッド、もう 1 つは onBlur メソッドです。

入力値が変更されると、this.props.dispatch を通じて行われます。 ({ type:'takeInputChange'})、この関数が呼び出されますが、take メソッドが見つかったため、実行を続行できません (一時停止)。ここでの take を takeEvery に置き換えると、状況は大きく異なり、関数は続行されます。実行するには、次の 2 つのコンソールが実行されます

そして、takeEvery 実行メソッドがそのコールバックに配置されます。以下のコードを参照してください

yield takeEvery(&#39;takeBlur&#39;,()=>{console.log(payload.value)});

この関数は入力が変更されるたびにトリガーされることを強調しておく必要があります。変更されるたびに、コンソールに値が表示されることがわかります

次に、入力がフォーカスを失うと、onBlur メソッドが実行され、this.props.dispatch({type:'takeBlur. '}); が呼び出されます。

takeInputChange のテイクは takeBlur アクションを監視しているため、実行する必要があるコンテンツは実行され続けます。これがいつ役立つかはわかりません

以上があなたのために役立つことを願っています。

関連記事:

ImmutableとReactの実践的なスキルを詳しく説明します

easyuiの日付とタイムボックスのIEの互換性に関する実践的な問題を解決する方法(詳細なチュートリアル)

Reactでネイティブを使用する画像表示コンポーネントを実装するには

以上がredux-sagaでのtakeの使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。