こんにちは私のアプリケーションを分割して、私のアプリケーションを分割したいと思います。<button />
から<menu />
私はonClickで関数を切り替えるだけです。状態を別のコンポーネントに渡す方法を教えてください
ボタンをクリックするとButton.jsファイルには状態が表示または非表示に切り替わります。彼らは機能を切り替えることができますし、
Buttonコンポーネント
import React, { PureComponent } from 'react';
import CSSTransitionGroup from 'react-addons-css-transition-group';
import { themr } from 'react-css-themr';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import localStyles from './NavButton.scss';
@themr('NavButton', localStyles)
export default class NavButton extends React.Component {
constructor(props) {
super(props);
this.state = {
visible: false,
};
this.toggleMenu = this.toggleMenu.bind(this);
}
toggleMenu() {
this.setState({
visible: !this.state.visible
})
console.log('toggle');
}
render() {
const {theme } = this.props;
return (
<div className={theme['nav-button']} onClick={this.toggleMenu}>
<span></span>
<span></span>
</div>
);
}
}
メニュー
import React, { PureComponent } from 'react';
import CSSTransitionGroup from 'react-addons-css-transition-group';
import { themr } from 'react-css-themr';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import localStyles from './Menu.scss';
import { NavButton } from '../../components';
@themr('Menu', localStyles)
export default class Menu extends React.Component {
render() {
return (
<div className="menu-wrapper">
<CSSTransitionGroup
transitionName="menu"
transitionEnterTimeout={300}
transitionLeaveTimeout={300}>
{this.state.visible &&
<Menus alignment="right">
<MenuItem hash="first-page">First Page</MenuItem>
<MenuItem hash="second-page">Second Page</MenuItem>
<MenuItem hash="third-page">Third Page</MenuItem>
</Menus>}
</CSSTransitionGroup>
</div>
);
}
}
const Menus = ({alignment, children, theme }) => (
<div className="menu">
<div className={alignment}>{children}</div>
</div>
);
Menu.jsはButton.jsと同じです – user2340824
どのようにボタンとメニューが接続されていますか?コンテナコンポーネントを追加できますか? コンテナ上の単一の場所に状態を保持することができます。パススルール状態は、メニューとして小道具として切り替わります。 –
私のメニューにボタンコンポーネントをインポートしてボタンクリック時にthis.state.visibleを変更したい、私のコードも更新しました – Alex