2016-11-16 6 views
3

私は反応起動ストラップを持っています。ボタンをクリックすると開く/閉じるべきCollapse。また、私はReduxの派遣を通してそれを開きたいが、簡単にするために、私はbool値でプロパティを渡しています:小包で崩壊するdivを開くにはどうしたらいいですか?

<App opennow={true} /> 

これは私のAppcomponentでrenderメソッドの一部です:

render() { 
    console.log('opennow', this.props.opennow) 

    //this.state.open = this.props.opennow; 
    console.log(this.state.open); 
    return (
     <div> 
     <Button onClick={ 
      ()=> 
     this.setState({ open: !this.state.open }) 
         }> 
      click 
     </Button> 
     <Collapse in={this.state.open}> 
      <div> 

どのようにすることができます私は既存の表示/非表示機能を維持し、ショーをトリガーします。つまり、この場合はプロパティを介してCollapseを開きますthis.props.opennow?あなたのクラスにcomponentDidMountを追加してください。Codepen

+0

を言っているのか?もしあなたが単にアクション/レデューサーを設定し、それを制御するブール(または何でも)で状態の一部を設定するならば、あなたはredux/reactで設定する他のアクションと同じようになります。 **コンポーネントのローカル状態を使用しようとしていますか?**あなたに求めている解決策の種類はわかりません。あなたがより多くを指定できるなら、私は明確な答えをあなたに提供することができます。 – ajmajmajma

答えて

2

DOMが生成された後にコードを実行します。 opennow小道具をtrueとして渡された場合

componentDidMount(){ 
    if(this.props.opennow){ 
     this.setState({open:true}) 
    } 
    } 

それは条件をチェックし、状態にtrueにopenを設定します。

ここでは、アプリのブートストラップレベルからブール値を渡して、代わりにオープンし、崩壊のクローズを制御するためにReduxのを使用したくないcodepen

+0

私はredux dispatchを使用して、これは同じイベントですか? –

+0

だから、あなたはreducexディスパッチを使って 'opennow'を変更するときに、変更を反映させたいと思いますか?つまり、 'opennow'(還元状態変数)を変更したディスパッチを起動し、次にモーダルを開いたり閉じたりします。 'componentWillReceiveProps()'を使用してください。コンポーネントが最初に初期化されるときに 'componentDidMount'が呼び出されるのと同じように、コンポーネントが変更されたときに' componentWillReceiveProps'が呼び出されます。 – mrinalmech

関連する問題