動的キーの定義方法はreduxのinitialStateにあります。
P粉478835592
2023-09-05 14:15:53
<p>各ユーザーがショッピング カートを持ち、redux と reduxpersist を使用してローカル ストレージに保存する電子商取引 Web サイトを持っています。 1 台のコンピュータで複数のアカウントを処理したいのですが、ユーザーが 2 つのアカウントを持っている場合、アカウントを切り替えることができ、各アカウントに関連するデータが表示されます。私の質問は、1 つのシステム アカウントで複数のアカウントを処理する方法です。各アカウントにはID。初期状態としてこの構造体を定義したいと思います: </p>
<pre class="brush:php;toolbar:false;">constInitialState = {
[ユーザーID]:{
カート:[]
}
}</pre>
<p>しかし、エラーが発生しました</p>
<p>ログインについては、next-auth を使用して処理し、ログイン時にユーザーの ID を取得するためにこのリデューサーを定義します。 </p>
<pre class="brush:php;toolbar:false;">addUserId: async (state, action) => { //ここで userId を受け取ります
const session = await getSession();
コンソール.ログ(セッション);
},</pre>
初期状態オブジェクトには定義されたプロパティがないため、空の
initialState
オブジェクトから始めることができます。状態を設定するデータがある場合、リデューサー内の状態に[userId]
属性を動的に追加できます。ただし、これを行う前に、まず空のオブジェクトでプロパティを初期化し、それを{ カート:[] }
に割り当てる必要があります。ドキュメントの Example を参照してください。そこには、次のような段落があります。 Immer は、ネストされたオブジェクトや配列を自動的に作成しません。それらは自分で作成する必要があります。