【发布时间】:2018-05-12 19:17:29
【问题描述】:
为什么我在这里得到状态未定义?我尝试了各种解决方案,但没有一个对我有用。有人可以指出这里做错了什么
编辑:
组件的完整代码
class Sidebar extends React.Component {
constructor (props) {
super(props)
this.state = {
menuSelected: menuOptions.menuItems[0].title,
}
this.createMenuListItem = this.createMenuListItem.bind(this)
}
render () {
console.log(this.state.menuSelected)
function getChildItems (child) {
let childItems = child.children.map(function (menuItem, index) {
return createMenuListItem(menuItem)
})
return (
<li key={child.title} className='dropdown'>
<i className={child.iconName} />
<span className='dropdown-toggle'>{child.title}</span>
<ul className=''>
{childItems}
</ul>
</li>
)
}
function createMenuListItem (menuItem) {
if (menuItem.hasChild === 'N') {
console.log(this.state.menuSelected)
return (
<li key={menuItem.title}>
<a href='#'>
<i className={menuItem.iconName} />
<span>{menuItem.title}</span>
</a>
</li>
)
} else {
return getChildItems(menuItem)
}
}
let menuItemsLoaded = menuOptions.menuItems.map((menuItem, index) => {
return createMenuListItem(menuItem)
})
return (
<nav id='sidebar'>
<ul className='list-unstyled'>
{menuItemsLoaded}
</ul>
</nav>
)
}
}
export default Sidebar
当侧边栏内容从服务器动态加载时,有人可能会提出更好的选择
【问题讨论】:
-
因为需要将函数
createMenuListItem与this绑定。 -
我尝试在构造函数 this.createMenuListItem = this.createMenuListItem.bind() 中添加它,但出现以下错误“无法读取未定义的属性‘绑定’”
-
这是错误的`this.createMenuListItem.bind()`应该是
this.createMenuListItem = this.createMenuListItem.bind(this) -
我仍然收到同样的错误“无法读取未定义的属性‘绑定’”
标签: reactjs ecmascript-6