2016-07-12 27 views
3

私はReact JSを使用してレスポンシブUIを作成しています。私は、次のように折りたたみ可能なサイドバーを作成したい:私は垂直バー(グラフ情報)をクリックしたときに enter image description hereReact JS:折りたたみ可能なサイドバー

enter image description hereは、だから、次の写真のように展開する必要があります。私はJsfiddleSample codeのようないくつかの例を見てきましたが、ここでは崩壊をコントロールするために静的ボタンを使用しています。私が使用できるライブラリはありますか?または任意のコードの提案?

私はReact JSを学んでいます。だから、どんな助けや提案も感謝します。

+0

:絶対に;'と '高さ:100%;'フルハイトバー –

答えて

6

ボタンはフィドルと似ていますが、サイドバーのコンポーネントに含めることができます。

I've updated the fiddle

リアクトの美しさは、状態を分離しています。私はこのように考える:

  1. 私はサイドバーは、私は私のサイドバーコンポーネントは、その小道具
  2. に基づいて/ショーを非表示にする
  3. を示すかどうすべきかと言う(店のように、)いくつかのグローバルな状態にしたいです
  4. 私は、コンポーネントがそれに応じてそれ自身を変更することを望み、どこからでもその値を変更/トグルします。

のでParent

var Parent = React.createClass({ 
    getInitialState: function(){ 
    return {sidebarOpen: false}; 
    }, 
    handleViewSidebar: function(){ 
    this.setState({sidebarOpen: !this.state.sidebarOpen}); 
    }, 
    render: function() { 
    return (
     <div> 
     <Header onClick={this.handleViewSidebar} /> 
     <SideBar isOpen={this.state.sidebarOpen} toggleSidebar={this.handleViewSidebar} /> 
     <Content isOpen={this.state.sidebarOpen} /> 
     </div> 
    ); 
    } 
}); 

SideBar(その関数を呼び出すボタンを追加すること)になり(今SideBarに機能して渡し)となります:

あなたが使用することができます
var SideBar = React.createClass({ 
    render: function() { 
    var sidebarClass = this.props.isOpen ? 'sidebar open' : 'sidebar'; 
    return (
     <div className={sidebarClass}> 
     <div>I slide into view</div> 
       <div>Me too!</div> 
     <div>Meee Threeeee!</div> 
     <button onClick={this.props.toggleSidebar} className="sidebar-toggle">Toggle Sidebar</button> 
     </div> 
    ); 
    } 
}); 
+0

こんにちはを作成するには、ソリューションをありがとうございました。アニメーションを右から左へ、左から右へ、インスタレーションすることは可能ですか? –

+0

はい、それは本当にCSSの質問です。あなたが示したことをするには、[position:absolute](https://developer.mozilla.org/ja/docs/Web/CSS/position)の仕組みなど、CSSを学ぶ必要があります。 –

+0

唯一の年とそれはすでに動作を停止しました。 – 1N5818

1

React Offcanvasコンポーネントを使用してこれを取得します。 ここにoffcanvasコンポーネントをインストールするリンクがあります。 `位置を使用垂直サイドバー(100%の高さ)を作成するには

https://github.com/vutran/react-offcanvas

関連する問題