繁体   English   中英

如何正确修改json in react?

[英]How to properly modify json in react?

目标是在我存储在状态的json上执行一些crud操作。 json结构不是固定的,而是变化和动态的。

我使用递归函数组件来显示json结构。 它有一个记录json层次结构的函数,只要选择了值,就会在其中存储给定值。 看起来像这样:[“arrayName”,“arrayIndex”,“objectName”,“key”,“value”]。 此时我知道这个值在json结构中的位置,虽然我不知道如何从这里继续。 最后,我发现这没有用。

功能组件具有此签名

const DisplayValue = ({ structure, category, value, onEdit })

该功能看起来像这样

const handleEdit = (structure, val) => {
    structure.unshift(val)
    onEdit(structure, category)
  }

例如,根据某些条件调用

if (Array.isArray(value)) {
    return (
      <div style={{ border: '1px solid grey', padding: 10 }}>
        {value.map((element, i) => {
          return (
            <div key={i}>
              <DisplayValue
                structure={structure}
                value={element}
                onEdit={() => handleEdit(structure, i)}
              />
            </div>
          )
        })}
      </div>
    )
  }

最后,如果值既不是数组也不是对象:

return (
    <div>
      <Button variant='light' onClick={() => handleEdit(structure, value)}>
        {value}
      </Button>
    </div>
  )

是否有人有处理和修改json结构的经验,愿意指出我正确的方向?

看起来你正试图让一个组件直接改变其中一个道具的值,这是不推荐的。

如果您的更改仅影响下游/子组件,那么您可以将变异状态存储在组件状态而不是组件道具中。 如果这样做,您将需要使用React Hooks,因为您正在使用功能组件。

如果你真的想要改变道具,因为这些改变可能会影响提供道具的组件层次结构中的更高层,或者介于其间,你会想要使用回调来影响组件中更高的值。层次结构或使用状态管理API(如Redux) ,这是我对一般状态修改的建议。

暂无
暂无

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

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