Сделать мою функцию общей для проверки состояния - PullRequest
0 голосов
/ 29 мая 2019

Я хочу создать функцию, которая может быть как можно более общей, но сейчас она не работает.

У меня есть два случая:

  • Проверьте, есть ли состояниесостояния не является пустым или истинным, и если мой элемент равен ему, я хочу сбросить его, вызвав resetState() и установив значение false и пустую строку

  • Проверьте, является ли состояниесостояния не является пустым, и если мой элемент равен ему, я хочу сбросить его, вызвав resetState () и пустую строку

Моя проблема: я пытаюсь заменить stateItem.checkedA чем-то вроде stateItem.item, чтобы избежать повторений, но у меня не работает, возможно ли в ответ на это сделать?

Вот что у меня есть:

const [stateBoolean, setStateBoolean] = React.useState({
    checkedA: false,
    checkedB: false
  });

const [stateItem, setStateItem] = React.useState({
    checkedA: "",
    checkedB: "toto",
    checkedC: "onlyHere not in Boolean"
  });

  const check = (listState) => {
    listState.map(item => {
      (stateBoolean.checkedA === true || stateItem.checkedA !== "") &&
      item === "checkedA"
        ? (resetChange("checkedA", "stateItem"),
          resetChange("checkedA", "stateBoolean"))
        : null;
      (stateBoolean.checkedB === true || stateItem.checkedB !== "") &&
      item === "checkedB"
        ? (resetChange("checkedB", "stateItem"), resetChange("checkedB", "stateBoolean"))
        : null;
      stateItem.checkedC !== "" && item === "checkedC"
        ? resetChange("checkedC", "stateItem")
        : null;
    });
  };

То, что я ожидал, но не работает:

const checkWanted = (listState) => {
    listState.map(item => {
      (stateBoolean.item === true || stateItem.item !== "") &&
      (item === "checkedB" || item === "checkedA")
        ? (resetChange(item, "stateItem"), resetChange(item, "stateBoolean"))
        : null;
      stateItem.checkedEOther !== "" && item === "checkedEOther"
        ? resetChange(item, "stateItem")
        : null;
    });
  };

Есть идеи?

1 Ответ

0 голосов
/ 29 мая 2019

Вместо этого используйте stateBoolean [item], чтобы получить доступ к свойствам объекта, например, к массиву

Карта функций возвращает новый массив mdn description Если вы хотите выполнить итерации для массива исделать то, что вы должны использовать forEach или цикл for.

...