0
私はMain.jsxの親ファイルを持っています。これは、同じコンポーネントを2つ持ちますが、異なるデータを添付しています。子コンポーネントには、onClickを持つボタンがあります。ReactJS、同じコンポーネント、他のコンポーネントからクラスをToggle onClick
Main.jsx
class Main extends React.Component {
render() {
return (
<div className="row">
<Child
styleName="pane-1 text-center"
title="Title 1"
description="Some Text"
/>
<Child
styleName="pane-2 text-center"
title="Title 2"
description="Some Text"
/>
</div>
)
}
}
export default Main
Child.jsx
class Child extends React.Component {
render() {
return (
<div className={classnames('pane', this.props.colName)}>
<div className={classnames(this.props.styleName)}>
<div className="col-sm-6 col-sm-offset-3">
<h2>{this.props.title}</h2>
<p>{this.props.description}</p>
<button onClick={this.togglePane} className="btn btn-primary-outline">Tell Me More</button>
</div>
</div>
</div>
)
}
}
export default Child
Child.jsx上記colNameに小道具をファイルに今、だけのため、変更する必要があるものですユーザーがボタンをクリックするコンポーネント。
ほとんどのコンポーネントは、同様にステートレス保つために私は同様にChild.jsxファイルに次のように試してみましたが、これは動作していないようだ、と私は読んだことから、そのよりよい:
constructor(props) {
super(props);
this.state = {
colName: 'col-sm-6'
};
this.togglePane = this.togglePane.bind(this);
}
togglePane() {
if (this.state.colName == 'col-sm-6'){
this.setState({colName: 'col-sm-4'})
} else {
this.setState({colName: 'col-sm-6'})
}
}
グレートそれを扱う、そのためにあなたに感謝します。ちょうどFYIだから、firstColとsecondColの2つのトグルがあります。それを行う最良の方法は、if文を使って2つの別々のtogglePaneLeft()とtogglePaneRight()を個別に切り替えることだと思いますか? – md85
はい、そのようなものはもっと簡単できれいになります。さもなければifが多すぎます。 – vijayst
大丈夫、ビジェイ助けてくれてありがとう!また、私は別の質問をするかどうかわからないが、私はまた、最初のトグルがクリックされたときに全く別の要素で2番目の子要素を置き換えようとしている。逆もまた同様である。それはrender()メソッドでifステートメントを使用していますが、それは本当に面倒です。適切なアイデアは、関連するdivと一緒に別のコンテナを持ち、代わりにそのページへのリンクを追加することでしょうか? – md85