React状態変数の代わりにMobXobservableを使用する必要があるのはいつですか?

セシリア・ムザイェク

私は少し混乱しています。私は通常、レンダリングされるものに影響を与えるすべての変数にオブザーバブルを使用します。しかし、それは正しい方法ですか?オブザーバブルの代わりに状態を使用する必要があるのはいつですか?

ダニラ

まあ、それは異なります!

通常、observableとして外部(共有、グローバル、またはあなたがそれを呼ぶものは何でも)状態があります(それらはしばしばストアと呼ばれ、クラスまたは純粋なオブジェクトまたはmobx-state-treeのような他のものでそれらを作ることができます)。

そして、ローカルストアは、次のような方法で「デフォルト」と反応して処理されるuseStateか、useReducer機能性成分のために、またはstateおよびsetStateクラスのために。

ただし、ローカル状態にもMobXを使用すると非常に便利な場合があります。そのような場合はフックがありuseLocalObservable、MobXの方法ですべてを記述し続けることができます。

import { observer, useLocalObservable } from "mobx-react-lite"

import { useState } from "react"

const TimerView = observer(() => {
    const timer = useLocalObservable(() => ({
        secondsPassed: 0,
        resetTime() {
            this.secondsPassed = 0
        }
        increaseTimer() {
            this.secondsPassed++
        }
    }))
    return <span onClick={timer.resetTimer}>Seconds passed: {timer.secondsPassed}</span>
})

この方法は将来的にReactSuspenseに何らかの影響を与える可能性がありますが、問題がないことが確実でない限り、すべての人に推奨されるわけではありません。詳細はこちら:https//mobx.js.org/react-integration.html#you-might-not-need-locally-observable-state

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Z3で変数の代わりに関数を使用する必要があるのはいつですか?

分類Dev

10進数の代わりにdoubleを使用する必要があるのはいつですか?

分類Dev

データが変更されない場合、Reactコンポーネントで状態を使用することは悪い習慣ですか?代わりに、クラスのプロパティを使用する必要がありますか?

分類Dev

メソッド内でローカル変数の代わりに最終変数を使用する必要があるのはいつですか

分類Dev

新しい例外の代わりにThrowableを使用する必要があるのはいつですか?

分類Dev

boolの代わりにatomic <bool>を本当に使用する必要があるのはいつですか?

分類Dev

UIButtonの代わりにanyObjectを迅速に使用する必要があるのはいつですか?

分類Dev

AngularでrouterLinkの代わりにhrefを使用する必要があるのはいつですか?

分類Dev

@Serviceの代わりに@Componentを使用する必要があるのはいつですか?

分類Dev

JSONFieldの代わりにHStoreFieldを使用する必要があるのはいつですか?

分類Dev

items()の代わりにiteritems()を使用する必要があるのはいつですか?

分類Dev

Forループの代わりにマップを使用する必要があるのはいつですか?

分類Dev

クラスの代わりに構造体を使用する必要があるのはいつですか?

分類Dev

Memcachedの代わりにMemcacheを使用する必要があるのはいつですか?

分類Dev

クラスの代わりに構造体を使用する必要があるのはいつですか?

分類Dev

クラスの代わりに構造体を使用する必要があるのはいつですか?

分類Dev

GL_RGB8の代わりにGL_SRGB8を使用する必要があるのはいつですか?

分類Dev

std :: thread :: spawnの代わりにstd :: thread :: Builderを使用する必要があるのはいつですか?

分類Dev

os.popenの代わりにsubprocess.Popenを使用する必要があるのはいつですか?

分類Dev

ドメインの代わりに列挙型を使用する必要があるのはいつですか?

分類Dev

Swift:「let」の代わりに「var」を使用する必要があるのはいつですか?

分類Dev

Kotlinの演算子を使用する代わりに、プラス、マイナス、回の関数を使用する必要があるのはいつですか?

分類Dev

変数の値を入力する代わりに、このインスタンスで変数を使用する必要があるのはなぜですか?

分類Dev

ReduxThunkの代わりにReduxSagaを使用する必要があるのはいつですか?また、ReduxSagaの代わりにReduxThunkを使用する必要があるのはいつですか?

分類Dev

SQL Server 2008で関数の代わりにストアドプロシージャを使用する必要があるのはいつですか?

分類Dev

クラスで関数foo()の代わりにfoo()を使用する必要があるのはなぜですか?

分類Dev

Enumの代わりにEnumMetaをサブクラス化する必要があるのはいつですか?

分類Dev

Flink:RichAggregateFunctionを使用する代わりに、平均と状態変数を計算する別のアプローチはありますか?

分類Dev

タスクを待つために、Async.AwaitTaskの代わりにAsync.AwaitIAsyncResultを使用する必要があるのはいつですか?

Related 関連記事

  1. 1

    Z3で変数の代わりに関数を使用する必要があるのはいつですか?

  2. 2

    10進数の代わりにdoubleを使用する必要があるのはいつですか?

  3. 3

    データが変更されない場合、Reactコンポーネントで状態を使用することは悪い習慣ですか?代わりに、クラスのプロパティを使用する必要がありますか?

  4. 4

    メソッド内でローカル変数の代わりに最終変数を使用する必要があるのはいつですか

  5. 5

    新しい例外の代わりにThrowableを使用する必要があるのはいつですか?

  6. 6

    boolの代わりにatomic <bool>を本当に使用する必要があるのはいつですか?

  7. 7

    UIButtonの代わりにanyObjectを迅速に使用する必要があるのはいつですか?

  8. 8

    AngularでrouterLinkの代わりにhrefを使用する必要があるのはいつですか?

  9. 9

    @Serviceの代わりに@Componentを使用する必要があるのはいつですか?

  10. 10

    JSONFieldの代わりにHStoreFieldを使用する必要があるのはいつですか?

  11. 11

    items()の代わりにiteritems()を使用する必要があるのはいつですか?

  12. 12

    Forループの代わりにマップを使用する必要があるのはいつですか?

  13. 13

    クラスの代わりに構造体を使用する必要があるのはいつですか?

  14. 14

    Memcachedの代わりにMemcacheを使用する必要があるのはいつですか?

  15. 15

    クラスの代わりに構造体を使用する必要があるのはいつですか?

  16. 16

    クラスの代わりに構造体を使用する必要があるのはいつですか?

  17. 17

    GL_RGB8の代わりにGL_SRGB8を使用する必要があるのはいつですか?

  18. 18

    std :: thread :: spawnの代わりにstd :: thread :: Builderを使用する必要があるのはいつですか?

  19. 19

    os.popenの代わりにsubprocess.Popenを使用する必要があるのはいつですか?

  20. 20

    ドメインの代わりに列挙型を使用する必要があるのはいつですか?

  21. 21

    Swift:「let」の代わりに「var」を使用する必要があるのはいつですか?

  22. 22

    Kotlinの演算子を使用する代わりに、プラス、マイナス、回の関数を使用する必要があるのはいつですか?

  23. 23

    変数の値を入力する代わりに、このインスタンスで変数を使用する必要があるのはなぜですか?

  24. 24

    ReduxThunkの代わりにReduxSagaを使用する必要があるのはいつですか?また、ReduxSagaの代わりにReduxThunkを使用する必要があるのはいつですか?

  25. 25

    SQL Server 2008で関数の代わりにストアドプロシージャを使用する必要があるのはいつですか?

  26. 26

    クラスで関数foo()の代わりにfoo()を使用する必要があるのはなぜですか?

  27. 27

    Enumの代わりにEnumMetaをサブクラス化する必要があるのはいつですか?

  28. 28

    Flink:RichAggregateFunctionを使用する代わりに、平均と状態変数を計算する別のアプローチはありますか?

  29. 29

    タスクを待つために、Async.AwaitTaskの代わりにAsync.AwaitIAsyncResultを使用する必要があるのはいつですか?

ホットタグ

アーカイブ