【问题标题】:Making my function general as possible for checking a state使我的功能尽可能通用以检查状态
【发布时间】:2019-10-14 19:34:46
【问题描述】:

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

我有两种情况:

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

有什么想法吗?

【问题讨论】:

    标签: reactjs state generalization


    【解决方案1】:

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

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

    【讨论】:

    • 我认为我没有正确解释或者我不明白:我尝试使用我的地图项访问另一个道具,例如访问 stateBoolean.item ,其中 item 将等于stateBoolean 中存在的“prop”,如 stateBoolean.checkedB(因此 item 可以等于 checkB、checkedC... 地图的每一轮)
    • 使用 stateBoolean[item] 代替,您可以像数组一样访问对象的键。我的回答是关于使用“listState.forEach(item => {”而不是“listState.map(item => {”
    猜你喜欢
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2019-06-04
    • 2022-01-27
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多