Heim  >  Fragen und Antworten  >  Hauptteil

Benötigt jedes Attribut einen Reduzierer?

<p>Ich folge dieser Anleitung, um eine Zahl zu erhöhen. </p> <p>Es funktioniert, aber jetzt möchte ich es auf etwa 100 Konfigurationswerte implementieren. Muss ich counterSlice.js 100 Mal kopieren oder muss ich die Nummer durch ein Objekt mit 100 Eigenschaften ersetzen? </p> <p>counterSlice.js</p> <pre class="brush:php;toolbar:false;">export const counterSlice = createSlice({ Name: 'Zähler', Ausgangszustand: { Wert: 0, }, Reduzierstücke: { Inkrement: (Zustand) => // Redux Toolkit ermöglicht es uns, „Modifikations“-Logik in Reduzierern zu schreiben. Der Status wird nicht wirklich geändert, da die Immer-Bibliothek verwendet wird. // Es erkennt Änderungen am „Entwurfsstatus“ und generiert basierend auf diesen Änderungen einen brandneuen unveränderlichen Status. // Darüber hinaus erfordern diese Funktionen keine Return-Anweisung. Zustand.Wert += 1 }, dekrementieren: (state) => state.value -= 1 }, incrementByAmount: (state, action) => state.value += action.payload }, }, }) // Aktionsersteller für jede Case-Reduction-Funktion generieren export const { inkrementieren, dekrementieren, inkrementierenByAmount } = counterSlice.actions Exportieren Sie den StandardcounterSlice.reducer</pre> <p><br /></p>
P粉124070451P粉124070451401 Tage vor386

Antworte allen(1)Ich werde antworten

  • P粉404539732

    P粉4045397322023-08-18 09:20:48

    在某些情况下,明确为每个状态字段创建函数可能是明智的。但是如果你确实有大约100个状态字段,那么你需要采用更通用的方法。

    我建议在reducer函数的payload中包含一个keyvalue字段。

    export const configSlice = createSlice({
      name: 'config',
      initialState: {},
      reducers: {
        setConfigValue: (state, action) => {
          const { key, value } = action.payload;
    
          state[key] = value;
        },
      },
    })

    Antwort
    0
  • StornierenAntwort