繁体   English   中英

如何在反应 state 中巧妙地将 object 推送到另一个复杂的 object 中?

[英]How to neatly push an object in another complex object in react state?

我正在尝试使用 react hook 声明一个复杂的数组作为

const [strategy, setStrategy] = useState([leg]);

在哪里

const leg = {
  entry: {
    conditions: [],
    actions: [""],
  },
  exit: {
    conditions: [],
    actions: [""],
  },
};

const condition = (param) => {
  return { param, val: "" };
};

现在,以下在数组中添加一条腿的代码工作正常

const addLeg = () => {
    const temp_strategy = [...strategy];
    temp_strategy.push(leg);

    setStrategy(temp_strategy);
};

现在,我想在给定索引的其中一条腿中添加一个条件(在前端单击按钮),以下是我正在尝试的代码

  const addCondition = (index, trigger, condition_param) => {
    // index is for leg
    // trigger is either 'entry' or 'exit'

    const temp_strategy = [...strategy];

    temp_strategy[index][trigger]['conditions'].push(condition(condition_param));

    setStrategy(temp_strategy);
  };

现在,如果在某个时候策略有 3 条边,如果我跟注

addCondition(1, 'entry', 'and')

然后它将上述条件附加到所有 3 条腿,但在“条目”object 内。

我的疑问是为什么它不适用于索引但它适用于索引和触发器相同的触发器

temp_strategy[index][trigger]['conditions'].push(condition(condition_param));

有一个专门为这种场景构建的漂亮库immer.js Go 在 https 查看这个://www.npmjs.com/package/immer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM