2017-03-20 13 views
0

以下のコードは機能しません。エラーがあります。モーダルのような別のコンポーネントを表示する方法が不思議ですか?1行で小道具として状態を渡す

showModal(){ 
    this.setState({preview:true}) 
    <Modal show={this.state.preview} /> 
} 

previewをtrueに設定し、それをpropに渡すことは冗長だと感じました。モーダルコンポーネントでdefaultPropsを宣言しているので、showはデフォルトでfalseです。Modalを呼び出すコンポーネントのinitialStateで状態をpreviewに設定する必要があるかどうかは疑問です。

+0

正確なエラーは何ですか?私はあなたが 'render()'の一部としてそのメソッドを呼び出すならば、 'return 'も必要と思っています。 – Labu

答えて

0

返信レンダリングするBabel/HTMLコンポーネント。これはによって達成することができます(ボタンのクリックをなど、イベントの後すなわち)あなたが何かをレンダリングしたいときに、コードを構造化するような方法は、ある

一般
return (
    <Modal show={this.state.preview} /> 
); 

、それが起こるときに状態を設定することです次に、<Modal .. />コンポーネントをレンダリングする本体で、そこにif条件を入れて状態をチェックします。例:

showModal =() => { 
    if(this.state.preview) { 
     return (
      <Modal /> 
     ); 
    } else { 
     return null; 
    } 
} 

render() { 
    return (
     <SampleComponent /> 
     { this.showModal() } 
    ); 
} 

可視性を制御する状態をそのようなコンポーネントに渡さないようにしてください。親コンポーネントの可視性を制御します。

関連する問題