0

我想创建一个尽可能通用的函数,但它现在不起作用。

我有两个案例:

  • 检查一个状态的状态是否不为空或不为真,如果我的项目等于他,我想通过调用重置他resetState()并设置为假和空字符串

  • 检查一个状态的状态是否不为空,如果我的项目等于他,我想通过调用 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;
    });
  };

任何想法?

4

1 回答 1

0

使用 stateBoolean[item] 代替,您可以访问对象的属性,如数组

函数映射返回一个新的数组mdn 描述 如果你想迭代一个数组并做一些你应该使用 forEach 或 for 循环的事情。

于 2019-05-29T09:13:48.203 回答