Warum bekomme ich den Zustand ist hier nicht definiert? Ich habe verschiedene Lösungen ausprobiert, aber keine funktionierte für mich. Kann jemand darauf hinweisen, was hier falschthis.state ist undefined innerhalb der Funktion - Reagieren JS
bearbeiten tut:
Komplett-Code der Komponente
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
auch jemand möglicherweise eine bessere Option vorschlagen, wenn der Sidebar Inhalt dynamisch vom Server geladen wird
, weil Sie die Funktion 'createMenuListItem' mit' this' verbinden müssen. – Cyril
i versucht, indem diese in Konstruktor this.createMenuListItem = this.createMenuListItem.bind() aber ich bekomme folgende Fehlermeldung "Can not Eigenschaft 'bind' undefinierte lesen" –
das ist falsch 'this.createMenuListItem.bind () 'sollte sein' this.createMenuListItem = this.createMenuListItem.bind (this) ' – Cyril