フックを使用して既存のreduxアクションでデータをフェッチする方法は?

マッサージ

Reactフックを理解しようとしています。私が欲しいのは、useEffectフックを使用してreduxアクションを呼び出すことにより、関数型コンポーネント内のデータをフェッチすることです。私は小道具を次のような状態に渡すことができることを知っています

 const [todoList] = useState(props.todoList)

しかし、既存のreduxアクションによってデータをフェッチするためのベストプラクティスは何ですか?

Reactクラスコンポーネントでは、このメソッドを呼び出してcomponentDidMount()でデータをフェッチし、everythinkが機能します。

import React, { useEffect } from 'react'
import { connect } from 'react-redux'
import { ITodo } from './types'
import { getTodos } from '../actions/todoActions'

interface IProps {
    todoList: Array<ITodo>

    getTodos: typeof getTodos
}


const Todos = (props: IProps) => {

    useEffect(() => {
          props.getTodos()
    }, [props.todoList])



    return (
         <div>
             {props.todoList.map((_) => (<div key={_.Id}>{_.Name}</div>))}
         </div>
      )
 }

 const mapStateToProps = (state) => ({
     todoList: state.todo.todoList
 })

 const mapDispatchToProps = {
     getTodos
 }


  export default connect(mapStateToProps, mapDispatchToProps)(ProdRoute)

propsを使用してtodoのリストを取得することを期待していました。props.getTodos()は、componentDidMount()メソッドのように一度呼び出す必要があります。しかし実際にはデータを取得し、getTodos()は何度も呼び出されますが、コンポーネントのマウント時に1回呼び出す必要があります

NoriSte

に渡す[props.todoList]と、useEffect次の理由で誤って一定の更新を強制していることに注意してください

  • useEffectインスタンス比較(===)を実行して、props.todoList変更されたかどうかを確認します
  • 最初のレンダリングの後、props.getTodos()ディスパッチャが呼び出されます
  • ときprops.todoListに更新されるコンポーネントが再レンダリングされます
  • useEffect呼び出しが届きます[props.todoList]、それが再実行するかしないかを必要とするかどうかを確認するための値として、
  • props.todoList変更され(空で、現在props.getTodos()価値があります)、そのように呼ばれます
  • reduxtodoListは同じ値でを更新しますが、配列参照を変更します
  • コンポーネントが再レンダリングされuseEffect[props.todoList]パラメータが更新されているかどうかが確認されます...ただし、内容が同じであっても、前のものprops.todoListが実際のものと異なるため、更新されています。props.todoList

だから、あなたがprops.getTodos()一度だけ電話する必要がある場合

  • 呼び出しの2番目のパラメータとしての[props.todoList.length]代わりに使用[props.todoList]useEffect
  • 呼び出しの[]2番目のパラメーターとして空の配列使用useEffectます(ドキュメントを参照

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

フェッチアクションでストアからのデータを使用する方法 (react-redux)

分類Dev

ClojureMapを使用して複数のMongoDBコレクションからデータをフェッチする方法

分類Dev

TypeScriptオブジェクトを使用してreduxアクションをディスパッチすることは可能ですか(そしてその方法)?

分類Dev

reduxを使用してreactでデータをフェッチする方法は?

分類Dev

useFocusEffectフックを使用してデータをフェッチする方法は?

分類Dev

フロータイプチェック:reduxアクションで未定義の可能性のあるプロパティを反復する方法は?

分類Dev

正規表現を使用してC#のMongoDBコレクションからデータをフェッチする方法は?

分類Dev

LinkPresentationを使用してSwiftUIでリンクメタデータをフェッチする方法は?

分類Dev

反応ネイティブアプリケーションでreduxを使用してデータをフェッチおよび表示していますが、バックエンドからのデータ変更時に更新されません

分類Dev

反応ネイティブアプリケーションでreduxを使用してデータをフェッチおよび表示していますが、バックエンドからのデータ変更時に更新されません

分類Dev

セクションなしでコアデータからデータをフェッチする

分類Dev

反応コンポーネントまたはreduxアクションでデータをフェッチする必要がありますか?

分類Dev

既存のクラスの新しいインスタンスとしてデータをフェッチする

分類Dev

ボタンを移動し、jqueryを使用してエフェクト/アニメーションメソッドでボタンを表示する方法は?

分類Dev

Androidで解析を使用して内部クエリを使用してデータをフェッチする方法は?

分類Dev

アクションなしでチェックボックスをオフにしてからチェックする方法は?

分類Dev

文字列調整オプションを使用してmysqlDBからデータをフェッチする方法は?

分類Dev

reduxフォームを使用するときにディスパッチをアクションに渡す方法

分類Dev

WebサービスAPIからフェッチされたデータを使用してコレクション内の要素を保存する方法

分類Dev

アクションはプレーンオブジェクトである必要があります。アクションをreduxフォームにディスパッチしようとしています

分類Dev

SELECTクエリから<オプション>として<選択>にデータをフェッチする方法

分類Dev

チェックボックスを使用してフォームのその他のオプションを表示し、フォームのアクション属性を変更するにはどうすればよいですか?

分類Dev

パブリッククラウドのアプリケーションは、グラフAPIを介して政府のテナントからデータをフェッチすることを許可できますか?

分類Dev

バックボーンを使用してコレクションをプリフェッチする方法

分類Dev

クラスはKotlinまたはJavaでリフレクションを使用して、インターフェイスからデフォルトのメソッドをオーバーライドしているかどうかを確認する方法?

分類Dev

ボタンの状態を変更し、アクションをreduxにディスパッチする方法は?

分類Dev

別のコレクションの条件をチェックして、コレクションからデータをフェッチします

分類Dev

Django 1.9 prefetch_related()を使用してモデルをクエリし、既存のデータをプリフェッチした結果を取得する方法

分類Dev

バックボーンでRESTAPIを使用してコレクションをフェッチする

Related 関連記事

  1. 1

    フェッチアクションでストアからのデータを使用する方法 (react-redux)

  2. 2

    ClojureMapを使用して複数のMongoDBコレクションからデータをフェッチする方法

  3. 3

    TypeScriptオブジェクトを使用してreduxアクションをディスパッチすることは可能ですか(そしてその方法)?

  4. 4

    reduxを使用してreactでデータをフェッチする方法は?

  5. 5

    useFocusEffectフックを使用してデータをフェッチする方法は?

  6. 6

    フロータイプチェック:reduxアクションで未定義の可能性のあるプロパティを反復する方法は?

  7. 7

    正規表現を使用してC#のMongoDBコレクションからデータをフェッチする方法は?

  8. 8

    LinkPresentationを使用してSwiftUIでリンクメタデータをフェッチする方法は?

  9. 9

    反応ネイティブアプリケーションでreduxを使用してデータをフェッチおよび表示していますが、バックエンドからのデータ変更時に更新されません

  10. 10

    反応ネイティブアプリケーションでreduxを使用してデータをフェッチおよび表示していますが、バックエンドからのデータ変更時に更新されません

  11. 11

    セクションなしでコアデータからデータをフェッチする

  12. 12

    反応コンポーネントまたはreduxアクションでデータをフェッチする必要がありますか?

  13. 13

    既存のクラスの新しいインスタンスとしてデータをフェッチする

  14. 14

    ボタンを移動し、jqueryを使用してエフェクト/アニメーションメソッドでボタンを表示する方法は?

  15. 15

    Androidで解析を使用して内部クエリを使用してデータをフェッチする方法は?

  16. 16

    アクションなしでチェックボックスをオフにしてからチェックする方法は?

  17. 17

    文字列調整オプションを使用してmysqlDBからデータをフェッチする方法は?

  18. 18

    reduxフォームを使用するときにディスパッチをアクションに渡す方法

  19. 19

    WebサービスAPIからフェッチされたデータを使用してコレクション内の要素を保存する方法

  20. 20

    アクションはプレーンオブジェクトである必要があります。アクションをreduxフォームにディスパッチしようとしています

  21. 21

    SELECTクエリから<オプション>として<選択>にデータをフェッチする方法

  22. 22

    チェックボックスを使用してフォームのその他のオプションを表示し、フォームのアクション属性を変更するにはどうすればよいですか?

  23. 23

    パブリッククラウドのアプリケーションは、グラフAPIを介して政府のテナントからデータをフェッチすることを許可できますか?

  24. 24

    バックボーンを使用してコレクションをプリフェッチする方法

  25. 25

    クラスはKotlinまたはJavaでリフレクションを使用して、インターフェイスからデフォルトのメソッドをオーバーライドしているかどうかを確認する方法?

  26. 26

    ボタンの状態を変更し、アクションをreduxにディスパッチする方法は?

  27. 27

    別のコレクションの条件をチェックして、コレクションからデータをフェッチします

  28. 28

    Django 1.9 prefetch_related()を使用してモデルをクエリし、既存のデータをプリフェッチした結果を取得する方法

  29. 29

    バックボーンでRESTAPIを使用してコレクションをフェッチする

ホットタグ

アーカイブ