ich in einer Komponente arbeite, wo, wenn ich auf der ich eine andere Liste von ElementenReagieren Conditional Rendering mit Staaten
Funktion der
handleClick() {
this.setState({
isActive: !this.state.isActive
});
};
Das Bedingte Rendering
if (isActive) {
SubList = <List hasIcons style="secondary"><ListItem><NavItem href={desktopUrl} title={title}><Icon name={name} />{title}</NavItem></ListItem></List>
}
Zustand zu ändern machen
NavItem
klicken
Die Liste NavItem und die {{SubList}}
<ListItem>
<NavItem isActive href={desktopUrl} title={title} onClick={this.handleClick}>
<Icon name={name} />
{title}
</NavItem>
{SubList}
</ListItem>
sich hier die ganze Komponente
export default class SportNavItem extends React.Component {
constructor() {
super();
this.state = {isActive: false};
// This binding is necessary to make `this` work in the callback
this.handleClick = this.handleClick.bind(this);
};
handleClick() {
this.setState({
isActive: !this.state.isActive
});
};
render() {
const { title, desktopUrl, isActive, name } = this.props.data;
// props.childItems; { title, name, isActive, url }
// const itemId = `nav-${slugEn}`;
const style = isActive ? 'primary' : 'default';
let SubList = null;
if (isActive) {
SubList = <List hasIcons style="secondary"><ListItem><NavItem isActive href={desktopUrl} title={title}><Icon name={name} />{title}</NavItem></ListItem></List>
}
return (
<List hasIcons style={style}>
<ListItem>
<NavItem isActive href={desktopUrl} title={title} onClick={this.handleClick}>
<Icon name={name} />
{title}
</NavItem>
{SubList}
</ListItem>
</List>
);
}
};
Die Komponente exportierte
const sampleData = {
title: 'Football',
name: 'football',
isActive: true,
desktopUrl: '#'
}
ReactDOM.render(
<div>
<SportNavItem data = { sampleData }/>
</div>,
document.getElementById('app')
);
Wenn ich den Status manuell isActive
-false
ändern i die SubList
machen kann. Ich kann nicht erreichen, den Status onClick
zu behandeln, und ich sehe Fehler in der Konsole nicht. Was ist möglicherweise falsch? Gibt es einen besseren Weg?
Sie können auf benutzerdefinierte Komponente nicht 'onClick'. Wickeln Sie 'NavItem' mit einem' div', das die onClick-Methode hat. –
fügen Sie es als eine Antwort, um es zu akzeptieren – Koala7