Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript react中的可编辑json和setState_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript react中的可编辑json和setState

Javascript react中的可编辑json和setState,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我尝试在textarea中使用map来显示一堆json对象。用户可以编辑它,但我必须验证所有json是否有效,然后才能将其传递到我的服务器 我在解析它时遇到问题,我应该在哪里解析它?在计算机上对其进行解析可以改变一种方式,但这很危险 onChange = (e, idx) => { this.setState({ data: this.state.data.map((o,i) => { if(i === idx){ return

我尝试在textarea中使用map来显示一堆json对象。用户可以编辑它,但我必须验证所有json是否有效,然后才能将其传递到我的服务器

我在解析它时遇到问题,我应该在哪里解析它?在计算机上对其进行解析可以改变一种方式,但这很危险

onChange = (e, idx) => {
    this.setState({
      data: this.state.data.map((o,i) => {
        if(i === idx){
          return JSON.parse(e.target.value) //dangerous
        }
        return o
      })
    })
  }

您可以这样做:

onChange = (e, idx) => {

    let  dataToSet = [...this.state.data]
    let error = false
    try {
      dataToSet = dataToSet.map((o,i) => {
        if(i === idx){
          return JSON.parse(e.target.value) //dangerous
        }
        return o
      })
    } catch(e) {
       error = true
    }
    this.setState({
      data: dataToSet,
      error,
    })
 }

下面是处理这些场景的codesandbox链接

然后使用
尝试
/
捕获
。请保存您的代码沙盒。它显示了死亡code@str你能详细说明一下吗?试试onChange中的catch?@stack26谢谢,没有注意到,保存了我的CodeSandbox,只是把它放在
JSON.parse
块的周围。