为了账号安全,请及时绑定邮箱和手机立即绑定

从多级嵌套对象数组 reactjs 创建嵌套的 JSX 元素

从多级嵌套对象数组 reactjs 创建嵌套的 JSX 元素

阿波罗的战车 2021-10-14 17:16:08
我有以下 JSON 结构,我需要将其转换为等效的 JSX 元素结构。标签可以是任意的,也可以无限嵌套。[  {    "tag": "div",    "children": [      {        "tag": "p",        "text": "hey",        "style": {          "color": "red",          "fontSize": "12px"        }      }    ]  },  {    "tag": "div",    "text": "Yo"  }]应该呈现为<div>  <p     style={{       color: 'red',      fontSize: '12px'    }}>hey</p></div><div>Yo</div>
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

这是一个 JSX 版本。


请注意,只有在有子项时才会调用递归调用。


 const data = [

  {

    "tag": "div",

    "children": [

      {

        "tag": "p",

        "text": "hey",

        "style": {

          "color": "red",

          "fontSize": "12px"

        }

      }

     ]

   },

   {

    "tag": "div",

    "text": "Yo"

  }

 ];



const Elements = ({elements}) => {

    return (

      <React.Fragment>

         {elements && elements.map(element => {

            let {tag, text, children, style} = element

            if(tag === "div") {

                 return(

                    <div style={style ? style: {}}>{text}

                       {children && <Elements elements={children}/>}

                     </div>

                   )

             } else if(tag === "p") {

                 return(

                    <p style={style ? style: {}}>{text}

                       {children && <Elements elements={children}/>}

                   </p>

                  )

            } 

        })}

     </React.Fragment>

);}


function render() {

  ReactDOM.render(<Elements elements={data} />, document.getElementById("root"));

}


render();


查看完整回答
反对 回复 2021-10-14
  • 3 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信