Action-Schöpfer, zu viele params gesendet werden Minderer

stimmen
0

Ich schicke meinen Minderer zu viel:

export const setStudent = (data, value, year, group, showStudent) => ({
    type: SET_STUDENT,
    data,
    value,
    year,
    group,
    showStudent
});

In meinem Minderer schicke ich es die Daten, die ich sortieren müssen, und die entsprechenden params:

  case SET_STUDENT:
        let studentName = data
            .find(option => {
                return option.id == year;
            })
            .options.find(option => {
                return option.id == group;
            })
            .options.find(option => {
                return option.id == value;
            }).label;

        return { ...state, student: value, label: studentName };

Anstatt senden datain der Aktion, kann ich importieren diese in meinem reducer, etwa so:

import { data } from ../config/calendars.js;

Meine mapDispatchToPropsist auch immer sehr verwirrend:

const mapDispatchToProps = dispatch => ({
    fetchEvents: id => dispatch(fetchEvents(id)),
    isLoadingCredentials: loadingCredentials =>
        dispatch(isLoadingCredentials(loadingCredentials)),
    setCredentials: credentials => dispatch(setCredentials(credentials)),
    setYear: year => dispatch(setYear(year)),
    setGroup: (group, data, year) =>
        dispatch(setGroup(group, data, year)),
    setStudent: (data, e, year, group, showStudent) =>
        dispatch(setStudent(data, e, year, group, showStudent)),
    resetForm: () => dispatch(resetForm()),
    setAuthenticated: value => dispatch(setAuthenticated(value))
});
Veröffentlicht am 19/12/2018 um 14:13
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Sie können den Code mithilfe der drastisch vereinfachen „-Objekt Stenografie“ FormmapDispatch . Nur ein Objekt mit dieser Aktion Schöpfer definieren, wie:

const mapDispatchToProps = {
    fetchEvents,
    isLoadingCredentials,
    setCredentials,
    setYear,
    setGroup,
    setStudent,
    resetForm,
    setAuthenticated,
}

Außerdem würde ich vermuten , dass Sie wahrscheinlich einige dieser „set“ Aktionen auf eine einzige konsolidieren konnten "USER_FORM_UPDATED"Aktion oder etwas ähnliches.

Beantwortet am 19/12/2018 um 16:53
quelle vom benutzer

stimmen
0

Wenn Daten ein statisches Objekt ist, können Sie es aus dem Minderer importieren. Es wird eine reine Funktion bleiben. Aber ich würde meine Minderer so einfach wie möglich machen und vielleicht bewege ich diese Logik auf die Aktion Schöpfer. Deshalb haben wir Aktion Schöpfer in erster Linie erstellen, die sie Logik als auch enthalten.

Zum Beispiel:

import { data } from "../config/calendars.js";

export const setStudent = (value, year, group, showStudent) => {
  let studentName = data
    .find(option => {
      return option.id == year;
    })
    .options.find(option => {
      return option.id == group;
    })
    .options.find(option => {
      return option.id == value;
    }).label;

  return {
    type: "SET_STUDENT",
    student: value,
    label: studentName
  };
}
Beantwortet am 19/12/2018 um 14:32
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more