【发布时间】:2019-10-20 03:35:06
【问题描述】:
我创建了一个菜单,其中包含一个子菜单和第三个子菜单。到目前为止,我只是在本地 const 数据中使用 json 完成了它,现在已经注释了。从现在开始,我需要从我的 json 收集数据,但我不知道该怎么做。现在我收到以下错误:'data' is not defined(在我的渲染中)
class Nav extends Component {
constructor(props){
super(props)
this.state = {
navigation:[]
}
}
componentWillMount() {
fetch('json_menuFIN.php')
.then(response => response.json())
.then(data =>{
this.setState({navigation: data });
console.log( data)
})
}
render(){
const { data = null } = this.state.navigation;
if ( this.state.navigation && !this.state.navigation.length ) { // or wherever your data may be
return null;
}
return (
<Menu data={this.state.navigation}/>
)
}
}
const renderMenu = items => {
return <ul>
{ items.map(i => {
return <li>
<a href={i.link}>{ i.title }</a>
{ i.menu && renderMenu(i.menu) }
</li>
})}
</ul>
}
const Menu = ({ data }) => {
return <nav>
<h2>{ data.title }</h2>
{ renderMenu(data.menu) }
</nav>
}
我不知道还能做些什么来让它与我所拥有的一起工作。非常感谢您的帮助。
【问题讨论】:
-
在你的渲染函数中将
<Menu data={data}/>更改为<Menu data={this.state.navigation}/> -
@Andrii Golubenko 如果我更改它,会出现以下错误:Can not read property 'map' of undefined
标签: javascript json reactjs