javascript - 对于大型 json 结构,ReactJS 中的滞后输入

标签 javascript reactjs

在 React 中,我正在为 JSON 对象创建一个表单。我有一个具有以下结构的大型 JSON 对象:

{
  "prop1": {
    "someProp": {
      "value": 2,
      "metadata": {
        "somemetadata": "somevalue"
      }
    }
  },
  "prop2": {
    "someOtherProp": {
      "value": 3,
      "metadata": {
        "editable": true
      }
    }
  },
...otherProps
}

对象的每个顶级属性都需要显示为表单中的选项卡,该表单将其所有子属性显示为我创建的可编辑字段

Object.keys(object[tab]).map((key, i) => {
  <TextField value={object[tab][key].value} onChange={handler(tab, key} />
})

//handler function
const handler = (tab,key) => e => {
  object[tab][key].value = e.target.value;

  //using redux action:
  setDataObject({...object});
}

这里的问题是,由于 json 结构非常大,onChange 重新渲染变得非常慢。消除输入并没有真正帮助。我想知道使输入更快的最佳方法。

我想尝试的一种方法是在 React 中使用 refs,但我不确定如何动态创建它们。任何帮助,将不胜感激。

最佳答案

如果您将 key 字段添加到您的 TextField,您的应用将只重新呈现它需要的内容。像这样:

Object.keys(object[tab]).map((key, i) => {
  <TextField key={`${i}_${object[tab][key].value}`} value={object[tab][key].value} onChange={handler} />
})

关于javascript - 对于大型 json 结构,ReactJS 中的滞后输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57857107/

相关文章:

javascript - 隐藏元素的部分内容

CSS 元素的位置在 Safari 中移动了一半(但在 Chrome 中没问题)

node.js - 无法从 mobx 导入装饰

javascript - React Native 中的条件导入

javascript - 属性 'submitAction' 在类型 '{}' 中缺失,但在类型中需要

reactjs - 在 React Native 中,如何使用浅层渲染测试我的组件?

javascript - 在 Android 设备的移动浏览器上自动打开组合框

javascript - TypeError : element. summernote 不是函数

javascript - Vuetify - 如何访问表单规则中的数据

Javascript:getElementsByClassName 未给出所有元素