「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Zustand のソースコードでの Object.assign() の使用法。

Zustand のソースコードでの Object.assign() の使用法。

2024 年 11 月 8 日に公開
ブラウズ:637

この記事では、Zustand のソース コードで Object.assign() がどのように使用されているかを理解します。

Object.assign() usage in Zustand

上記のコード スニペットは vanilla.ts からのものです。状態を設定すると、Object.assign が状態オブジェクトの更新に使用されます。

まず Object.assign:

の基本を理解しましょう

Object.assign()

Object.assign() 静的メソッドは、列挙可能なすべての独自のプロパティを 1 つ以上の ソース オブジェクトから ターゲット オブジェクトにコピーします。変更されたターゲット オブジェクトを返します。

const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };

const returnedTarget = Object.assign(target, source);

console.log(target);
// Expected output: Object { a: 1, b: 4, c: 5 }

console.log(returnedTarget === target);
// Expected output: true

ターゲット オブジェクトの b 値は、ソース オブジェクトの b 値に置き換えられます。

すごくシンプルですよね?ここで、いくつかの実験を実行して、Zustand の setState が Object.assign() メソッドをどのように利用するかを理解しましょう。

Zustand のソースコード内の Object.assign():

// pulled from: https://github.com/pmndrs/zustand/blob/main/src/vanilla.ts#L76
state = (replace != null ? 
              replace : 
              typeof nextState !== "object" || 
              nextState === null) ? 
                nextState : 
                Object.assign({}, state, nextState);

これは、上記のコード スニペットにあるネストされた三項演算子です。 replace が null でない場合は、state が replace になります。 nextState がオブジェクトではない場合は、nextState をそのまま返しますが、ここで興味があるのは Object.assign({}, state, newState).

です。

まずログを記録して、状態を更新するときの状態と次の状態を確認しましょう。私が選んだ例は、Zustand のソース コードのデモ例からのものです。いくつかのコンソール ステートメントを追加して実験を実行できるように、コードを少し変更しました。

Object.assign() usage in Zustand

Object.assign() usage in Zustand

この単純な例では、カウントが増加すると、Object.assign.

を使用して状態オブジェクトが更新されます。

次回、JSON オブジェクトに対して更新を実行しようとすると、Object.assign.

を使用します。

私たちについて:

Think Throo では、オープンソース プロジェクトからインスピレーションを得たベスト プラクティスを教えるという使命を担っています。

Next.js/React の高度なアーキテクチャ概念を実践してコーディング スキルを 10 倍にし、ベスト プラクティスを学び、本番レベルのプロジェクトを構築します。

私たちはオープンソースです — https://github.com/thinkthroo/thinkthroo (スターを付けてください!)

あなたのビジネスに合わせたオーダーメイドの Web システムを構築したいとお考えですか? [email protected]

までお問い合わせください。

著者について:

やあ、ラムです。私は情熱的なソフトウェア エンジニア/OSS Tinkerer です。

私のウェブサイトをチェックしてください: https://www.ramunarasinga.com/

参考文献:

  1. https://github.com/pmndrs/zustand/blob/main/src/vanilla.ts#L76

  2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

リリースステートメント この記事は次の場所に転載されています: https://dev.to/thinkthroo/objectassign-usage-in-zustands-source-code-1aam?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3