【问题标题】:I need to traverse nth node and update the "header"我需要遍历第n个节点并更新“标题”
【发布时间】:2020-07-13 12:21:56
【问题描述】:

请在下面找到包含数组内嵌套对象的代码

我需要遍历第 n 个节点并将“标题”更新为其他值,即正在更新输入元素

我正在使用递归来更新值,但它没有更新。

我可以使用 lodash 或其他方式使用反应钩子遍历和更改“标题”

需要使用钩子来更新值

有什么建议吗?

请参考下面的sn-p

const jsondata= [
  {
    header: "Test-1",
    y14: 10,
    y15: 15,
    y16: 20,

    parents: [
      {
        // id: 1,
        header: "Test-2",
        y14: 5,
        y15: 10,
        y16: 20,

        children: [
          {
            id: 1,
            header: "Test-3",
            y14: 5,
            y15: 10,
            y16: 20
          },
          {
            id: 2,
            header: "Test-4",
            y14: 5,
            y15: 10,
            y16: 20,

            children: [
              {
                id: 2,
                header: "Test-5",
                y14: 3,
                y15: 2,
                y16: 1
              },
              {
                id: 2,
                header: "Test-6",
                y14: 4,
                y15: 5,
                y16: 6
              }
            ]
          }
        ]
      },
      {
        id: 1,
        header: "Test-7",
        y14: 5,
        y15: 10,
        y16: 20
      }
    ]
  },
];

const [data, setData]=useState(jsondata);
const tempObj = {};
function iterate(obj: any) {
    for (const k in obj) {
      if (typeof obj[k] == 'object' && obj[k] !== null) {
        iterate(obj[k]);
      } else {
        tempObj[k] = <input type="text" value={obj[k]} />;
        setData([...data,tempObj]);
      }
    }
  }

【问题讨论】:

    标签: javascript reactjs react-hooks


    【解决方案1】:

    你可以这样遍历:

    https://codesandbox.io/s/json-example-m3u4x

    但我会建议 lodash 使用更少的代码来 ._assign 值。

    https://lodash.com/docs/4.17.15#assign

    希望对你有帮助

    【讨论】:

    • 打开控制台可以看到结果
    • 不仅遍历还需要更新header的值
    • 如果你导入 react-lodash 并使用 Object.assign({header: headerValue}, parent) 来分配值。
    猜你喜欢
    • 2021-06-24
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2018-11-21
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多