Javascript UPD:React不';t从函数返回HTML元素
我需要从React.Component中的JSON创建一个嵌套的手风琴菜单。对象对象的每个键都必须是单击时显示嵌套项的按钮(如果值不为null)。我有两个函数,分别为键和值创建按钮和隐藏div,但它们不会出现在HTML代码中 menuItems.jsonJavascript 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,
{
"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,所以请尝试以下方法:(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>;
}