Javascript UPD:React不';t从函数返回HTML元素

Javascript UPD:React不';t从函数返回HTML元素,javascript,html,json,reactjs,return,Javascript,Html,Json,Reactjs,Return,我需要从React.Component中的JSON创建一个嵌套的手风琴菜单。对象对象的每个键都必须是单击时显示嵌套项的按钮(如果值不为null)。我有两个函数,分别为键和值创建按钮和隐藏div,但它们不会出现在HTML代码中 menuItems.json { "item1": { "nestedItem1": null, "nestedItem2": { "deeplyNetstedItem1": null } }, "item2": null,

我需要从React.Component中的JSON创建一个嵌套的手风琴菜单。对象对象的每个键都必须是单击时显示嵌套项的按钮(如果值不为null)。我有两个函数,分别为键和值创建按钮和隐藏div,但它们不会出现在HTML代码中

menuItems.json

{
  "item1": {
    "nestedItem1": null,
    "nestedItem2": {
      "deeplyNetstedItem1": null
    }
  },
  "item2": null,
  "item3": null,
  "item4": {
    "nestedItem3": null
  }
}
DropdownList.jsx(UPD)

从“React”导入React;
类DropdownList扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
数据:this.props.data
};
this.createListData=this.createListData.bind(this);
this.createButton=this.createButton.bind(this);
this.createHidden=this.createHidden.bind(this);
}
createButton=(项目)=>{
返回{item}
}
createHidden=(项目)=>{
返回{item}
}
createListData=(数据)=>{
for(让对象的[key,value]项(数据)){
if(值和类型)(值)=“对象”){
console.log(键、值);
此.createButton(键);
此.createListData(值);
}否则{
此.createHidden(键);
控制台日志(键);
}
}
}
render(){
返回{this.createListData(this.state.data)}
}
}
导出默认下拉列表;
App.js

import React from "react";
import DropdownList from "./DropdownList/DropdownList";
import data from "./menuItems.json";

function App() {
  return <DropdownList data={data} />;
}

export default App;
从“React”导入React;
从“/DropdownList/DropdownList”导入DropdownList;
从“/menuItems.json”导入数据;
函数App(){
返回;
}
导出默认应用程序;
这将起作用

renderObject = obj => {
    return obj === 'object' ? Object.values(obj).map(val =>
      typeof val === 'object' ? (
        this.renderObject(val)
      ) : (
        <li>{val ? val : 'Any message'}</li>
      ),
    ) : <li>Any message</li>
  };
  render() {
    return <div>{this.renderObject(this.state.data)}</div>;
  }
renderObject=obj=>{
返回obj=='object'?object.values(obj.map)(val=>
typeof val===‘对象’(
此.renderObject(val)
) : (
  • {val?val:'任何消息'}
  • ), )有什么消息吗 }; render(){ 返回{this.renderObject(this.state.data)}; }
    我需要从对象输出所有项,这样只输出键OK,所以请尝试以下方法:(
  • {val?val:'}
  • ),;};render(){return{this.renderObject(this.state.data)};}TypeError:无法将未定义或null转换为objectI更新了上述代码,尝试一下,它不会给您带来错误
    renderObject = obj => {
        return obj === 'object' ? Object.values(obj).map(val =>
          typeof val === 'object' ? (
            this.renderObject(val)
          ) : (
            <li>{val ? val : 'Any message'}</li>
          ),
        ) : <li>Any message</li>
      };
      render() {
        return <div>{this.renderObject(this.state.data)}</div>;
      }