私は新しい反応があります。クリックイベントをバインドして2つの場所でクラスを切り替える方法を理解しようとしています。これをどのように達成するのですか?「ハンバーガーメニュー」をクリックし、Reactのサイドナビゲーターを開きますか?
これまで私がこれまで行ってきたことは次のとおりです。
NAV:
import React from 'react';
import { css } from 'glamor';
import { container } from '../contents/grid'
export default class Navigation extends React.Component {
constructor(props) {
super(props);
this.state = { isToggled: true };
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState(prevState => ({
isToggled: !prevState.isToggled
}));
}
showHeader() {
this.refs.navigation.show();
}
render() {
return (
<nav className={nav} {...container}>
<ul {...hamburger} className={this.state.isToggled ? "" : "active"} onClick={this.handleClick}>
<li>
</li>
</ul>
</nav>
)
}
}
とサイドメニュー/ヘッダ:
import React from 'react';
import { Link } from 'react-router-dom';
import { css } from 'glamor';
import { header, nav, navUL } from '../contents/navigation';
export default class Header extends React.Component {
constructor(props) {
super(props);
}
show() {
this.setState({
isToggled: true
});
}
render() {
return (
<header {...header}>
<nav {...nav}>
<ul {...navUL} className={styleUl}>
<li>
<Link to='/'>Robin Savemark</Link>
</li>
<li>
<Link to='/experience'>Erfarenhet</Link>
</li>
<li>
<Link to='/education'>Utbildning</Link>
</li>
<li>
<Link to='/project'>Projekt</Link>
</li>
<li>
<Link to='/knowledge'>Kunskaper</Link>
</li>
<li>
<Link to='/contact'>Kontakt</Link>
</li>
</ul>
</nav>
</header>
)
}
}
そして、私は唯一の各コンポーネントのレンダリングアプリケーション:
import React from 'react';
import Navigation from './Navigation';
import Header from './Header';
import Main from './Main';
export default class App extends React.Component {
render() {
return (
<div>
<Navigation />
<Header ref="Navigation" />
<Main />
</div>
)
}
}
どのように私は私が言うのですがハンバーガーメニューとヘッダー/サイドメニューを「トグル」するための「handleClick」メソッド? handleClickは別のスコープ内にあるので(Navigation)、Headerクラスの内部で同じことをすることはできません。