実現したいこと
Reactで親子関係にある2つのコンポーネントでstateを使いまわしたいと思っています。
親コンポーネントAAA
子コンポーネントBBB
今は下記のようなコードを記述していますが、両方のコンポーネントで、初期stateの設定、及びsetStateの設定のために、同じことを二度も記述しています。
(なお、setStateの値は最終的にjsonファイルからfetchさせて取得する予定ですが、今は省略して、直書きでsetStateしています。)
おそらく、もっとスマートに書くことができる気がするのですが、自分では解決できませんでした。
もっとスマートに書く方法をご教示いただけますと幸いです。
ソースコード
js
1import React from 'react' 2import PropTypes from 'prop-types' 3 4//親コンポーネント 5class AAA extends React.Component { 6 constructor(props) { 7 super(props) 8 this.state = { 9 hoge: 0, 10 fuga: 0 11 } 12 } 13 14 componentWillMount() { 15 this.setState({ 16 hoge: 100, 17 fuga: 200 18 }) 19 } 20 21 render() { 22 const { hoge, fuga } = this.state 23 return ( 24 <div> 25 <p>{hoge}</p> 26 <p>{fuga}</p> 27 <BBB piyo="foo">項目1</BBB> 28 <BBB piyo="bar">項目2</BBB> 29 </div> 30 ) 31 } 32} 33AAA.propTypes = { 34 AAA: PropTypes.node 35} 36 37 38//子コンポーネント 39class BBB extends React.Component { 40 constructor(props) { 41 super(props) 42 this.state = { 43 hoge: 0, 44 fuga: 0 45 } 46 } 47 48 componentWillMount() { 49 this.setState({ 50 hoge: 100, 51 fuga: 200 52 }) 53 } 54 55 render() { 56 const { hoge, fuga } = this.state 57 const { piyo } = this.props 58 return ( 59 <div className={`${piyo}`}> 60 <p>{ hoge }</p> 61 <p>{ fuga }</p> 62 <p>{this.props.children}</p></div> 63 ) 64 } 65} 66BBB.propTypes = { 67 BBB: PropTypes.node 68} 69 70export default AAA
初歩的な質問ですが、
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/12 15:28
2018/05/12 15:29