1
私のレイアウトコンポーネントでは、メニューを開くか閉じて強制的に切り替える2つの方法があります。トグルメソッドは魅力的ですが、ユーザーがヘッダー内の何かをクリックするとメニューが閉じられるようになります(メニューはページ間で開いたままになりません)。しかし、その部分は働きたいと思わないし、私は理由を伝えることができません。onclickハンドラがコンポーネント上で動作しません
は、ここに私のコードです:私は、コンソールログを追加しました
import React from 'react';
import Header from '../components/Header.jsx';
import Footer from '../components/Footer.jsx';
export default class Layout extends React.Component {
constructor(props) {
super(props);
this.state = {
mobileMenuVisible: false
}
}
handleNavClick() {
// Check if the menu is visible and then toggle to the other state
if(!this.state.mobileMenuVisible) {
this.setState({mobileMenuVisible: true});
} else {
this.setState({mobileMenuVisible: false});
}
}
forceCloseNav() {
// Don't perform checks, just set the menu visibility to false
this.setState({mobileMenuVisible: false});
}
render() {
const { dispatch } = this.props;
return(
<div class={'main menu-open-'+ this.state.mobileMenuVisible} role="main">
<span class="header-toggle" onClick={this.handleNavClick.bind(this)}><div><span>Menu</span></div></span>
<Header onClick={this.forceCloseNav.bind(this)}/>
<div class="wrapper">
{ this.props.children }
</div>
<Footer />
</div>
)
}
}
と私は、コンポーネント上のonClickハンドラがまったく発生しませんことがわかります。
はああうん、それはカスタムコンポーネントであり、私がやりたいような状態を更新している、HTML
<header>
での作業の例を見ることができます私はそのコンポーネントの中に何かを追加しなければならないことに気付かなかった。 forceCloseNav()メソッドと一致するようにコードを更新しましたが、違いが生じていないようです(おそらく私のカスタムがカスタムであるためです)。何か他に必要なことはありますか? –私は例を更新します、5分 – alunyov
ああ!私はそれを修正しました、私は 'onClick = {this.props.onClick}'をヘッダコンポーネントに追加しました。ご協力いただきありがとうございます! –