how can I dynamically attach sidebar components to multiple instances of sidebar?












1















I'm new to React and building out a design a ran into a problem.



I have a component called SideBar. I am using this component two times, one on each side of the page.



The problem is that I would like to add different components to each instance of the SideBar component. These would be lists of various items and etc. I assumed I could next component tags but the sidebar component doesn't output.



import React, { Component } from "react";
import SideBar from "./WorkspaceComponents/SideBar";
import ScrollerBox from "./WorkspaceComponents/SideBarComponents/ScrollerBox";

class Workspace extends Component {
render() {
return (
<main className="reely-workspace">
<SideBar position="SideBarLeft">
<ScrollerBox />
</SideBar>
<SideBar position="SideBarRight" />
</main>
);
}
}

export default Workspace;









share|improve this question



























    1















    I'm new to React and building out a design a ran into a problem.



    I have a component called SideBar. I am using this component two times, one on each side of the page.



    The problem is that I would like to add different components to each instance of the SideBar component. These would be lists of various items and etc. I assumed I could next component tags but the sidebar component doesn't output.



    import React, { Component } from "react";
    import SideBar from "./WorkspaceComponents/SideBar";
    import ScrollerBox from "./WorkspaceComponents/SideBarComponents/ScrollerBox";

    class Workspace extends Component {
    render() {
    return (
    <main className="reely-workspace">
    <SideBar position="SideBarLeft">
    <ScrollerBox />
    </SideBar>
    <SideBar position="SideBarRight" />
    </main>
    );
    }
    }

    export default Workspace;









    share|improve this question

























      1












      1








      1








      I'm new to React and building out a design a ran into a problem.



      I have a component called SideBar. I am using this component two times, one on each side of the page.



      The problem is that I would like to add different components to each instance of the SideBar component. These would be lists of various items and etc. I assumed I could next component tags but the sidebar component doesn't output.



      import React, { Component } from "react";
      import SideBar from "./WorkspaceComponents/SideBar";
      import ScrollerBox from "./WorkspaceComponents/SideBarComponents/ScrollerBox";

      class Workspace extends Component {
      render() {
      return (
      <main className="reely-workspace">
      <SideBar position="SideBarLeft">
      <ScrollerBox />
      </SideBar>
      <SideBar position="SideBarRight" />
      </main>
      );
      }
      }

      export default Workspace;









      share|improve this question














      I'm new to React and building out a design a ran into a problem.



      I have a component called SideBar. I am using this component two times, one on each side of the page.



      The problem is that I would like to add different components to each instance of the SideBar component. These would be lists of various items and etc. I assumed I could next component tags but the sidebar component doesn't output.



      import React, { Component } from "react";
      import SideBar from "./WorkspaceComponents/SideBar";
      import ScrollerBox from "./WorkspaceComponents/SideBarComponents/ScrollerBox";

      class Workspace extends Component {
      render() {
      return (
      <main className="reely-workspace">
      <SideBar position="SideBarLeft">
      <ScrollerBox />
      </SideBar>
      <SideBar position="SideBarRight" />
      </main>
      );
      }
      }

      export default Workspace;






      reactjs components






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 1 at 10:34









      JSumJSum

      11411




      11411
























          2 Answers
          2






          active

          oldest

          votes


















          1














          You can make your SideBar Component a wrapper component which wraps around the content given in it.



          Making SideBar Component a Wrapper Component :



          class Sidebar extends Component {
          render() {
          return (
          <div className="sidebar">
          // You can add any custom element here //
          {this.props.children}
          </div>
          )
          }
          }


          All your element passed inside the SideBar Component will now be rendered as a part of SideBar along with what it contains.



          Way to consume the wrapper component:



          <SideBar>
          <Content1></Content1>
          <Content2></Content2>
          <Content3></Content3>
          </SideBar>





          share|improve this answer

































            2














            Your sidebar component should receive a children prop and render it out.



            Something like this:



            class Sidebar extends Component {
            render() {
            const {children} = this.props;
            return (
            <div className="sidebar">
            <h1>Sidebar</h1>
            {children}
            </div>
            )
            }
            }


            Check out this post on react docs to understand how to compose react components: https://reactjs.org/docs/composition-vs-inheritance.html






            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53994763%2fhow-can-i-dynamically-attach-sidebar-components-to-multiple-instances-of-sidebar%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              1














              You can make your SideBar Component a wrapper component which wraps around the content given in it.



              Making SideBar Component a Wrapper Component :



              class Sidebar extends Component {
              render() {
              return (
              <div className="sidebar">
              // You can add any custom element here //
              {this.props.children}
              </div>
              )
              }
              }


              All your element passed inside the SideBar Component will now be rendered as a part of SideBar along with what it contains.



              Way to consume the wrapper component:



              <SideBar>
              <Content1></Content1>
              <Content2></Content2>
              <Content3></Content3>
              </SideBar>





              share|improve this answer






























                1














                You can make your SideBar Component a wrapper component which wraps around the content given in it.



                Making SideBar Component a Wrapper Component :



                class Sidebar extends Component {
                render() {
                return (
                <div className="sidebar">
                // You can add any custom element here //
                {this.props.children}
                </div>
                )
                }
                }


                All your element passed inside the SideBar Component will now be rendered as a part of SideBar along with what it contains.



                Way to consume the wrapper component:



                <SideBar>
                <Content1></Content1>
                <Content2></Content2>
                <Content3></Content3>
                </SideBar>





                share|improve this answer




























                  1












                  1








                  1







                  You can make your SideBar Component a wrapper component which wraps around the content given in it.



                  Making SideBar Component a Wrapper Component :



                  class Sidebar extends Component {
                  render() {
                  return (
                  <div className="sidebar">
                  // You can add any custom element here //
                  {this.props.children}
                  </div>
                  )
                  }
                  }


                  All your element passed inside the SideBar Component will now be rendered as a part of SideBar along with what it contains.



                  Way to consume the wrapper component:



                  <SideBar>
                  <Content1></Content1>
                  <Content2></Content2>
                  <Content3></Content3>
                  </SideBar>





                  share|improve this answer















                  You can make your SideBar Component a wrapper component which wraps around the content given in it.



                  Making SideBar Component a Wrapper Component :



                  class Sidebar extends Component {
                  render() {
                  return (
                  <div className="sidebar">
                  // You can add any custom element here //
                  {this.props.children}
                  </div>
                  )
                  }
                  }


                  All your element passed inside the SideBar Component will now be rendered as a part of SideBar along with what it contains.



                  Way to consume the wrapper component:



                  <SideBar>
                  <Content1></Content1>
                  <Content2></Content2>
                  <Content3></Content3>
                  </SideBar>






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Jan 1 at 11:09

























                  answered Jan 1 at 11:01









                  Praveen Rao Chavan.GPraveen Rao Chavan.G

                  1,534719




                  1,534719

























                      2














                      Your sidebar component should receive a children prop and render it out.



                      Something like this:



                      class Sidebar extends Component {
                      render() {
                      const {children} = this.props;
                      return (
                      <div className="sidebar">
                      <h1>Sidebar</h1>
                      {children}
                      </div>
                      )
                      }
                      }


                      Check out this post on react docs to understand how to compose react components: https://reactjs.org/docs/composition-vs-inheritance.html






                      share|improve this answer




























                        2














                        Your sidebar component should receive a children prop and render it out.



                        Something like this:



                        class Sidebar extends Component {
                        render() {
                        const {children} = this.props;
                        return (
                        <div className="sidebar">
                        <h1>Sidebar</h1>
                        {children}
                        </div>
                        )
                        }
                        }


                        Check out this post on react docs to understand how to compose react components: https://reactjs.org/docs/composition-vs-inheritance.html






                        share|improve this answer


























                          2












                          2








                          2







                          Your sidebar component should receive a children prop and render it out.



                          Something like this:



                          class Sidebar extends Component {
                          render() {
                          const {children} = this.props;
                          return (
                          <div className="sidebar">
                          <h1>Sidebar</h1>
                          {children}
                          </div>
                          )
                          }
                          }


                          Check out this post on react docs to understand how to compose react components: https://reactjs.org/docs/composition-vs-inheritance.html






                          share|improve this answer













                          Your sidebar component should receive a children prop and render it out.



                          Something like this:



                          class Sidebar extends Component {
                          render() {
                          const {children} = this.props;
                          return (
                          <div className="sidebar">
                          <h1>Sidebar</h1>
                          {children}
                          </div>
                          )
                          }
                          }


                          Check out this post on react docs to understand how to compose react components: https://reactjs.org/docs/composition-vs-inheritance.html







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Jan 1 at 10:37









                          CanastroCanastro

                          1,9012334




                          1,9012334






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53994763%2fhow-can-i-dynamically-attach-sidebar-components-to-multiple-instances-of-sidebar%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              MongoDB - Not Authorized To Execute Command

                              in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

                              How to fix TextFormField cause rebuild widget in Flutter