Change state if I choose other React Router?









up vote
0
down vote

favorite












I'm trying to display the props value from the react router in the title place but I do not know if it is possible.



If router'/dashboard', title = 'Dashboard',
Else if router '/payment', title = 'Payment'



class Header extends React.Component {
state =
title: '',
;

render() {
const title = this.state;

return (
<Typography>
title
</Typography>

<Switch>
<Route title="Dashboard" exact path="/dashboard" component=DashboardPage />
<Route title="Payment" path="/payment" component=PaymentPage />
</Switch>
)









share|improve this question

























    up vote
    0
    down vote

    favorite












    I'm trying to display the props value from the react router in the title place but I do not know if it is possible.



    If router'/dashboard', title = 'Dashboard',
    Else if router '/payment', title = 'Payment'



    class Header extends React.Component {
    state =
    title: '',
    ;

    render() {
    const title = this.state;

    return (
    <Typography>
    title
    </Typography>

    <Switch>
    <Route title="Dashboard" exact path="/dashboard" component=DashboardPage />
    <Route title="Payment" path="/payment" component=PaymentPage />
    </Switch>
    )









    share|improve this question























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I'm trying to display the props value from the react router in the title place but I do not know if it is possible.



      If router'/dashboard', title = 'Dashboard',
      Else if router '/payment', title = 'Payment'



      class Header extends React.Component {
      state =
      title: '',
      ;

      render() {
      const title = this.state;

      return (
      <Typography>
      title
      </Typography>

      <Switch>
      <Route title="Dashboard" exact path="/dashboard" component=DashboardPage />
      <Route title="Payment" path="/payment" component=PaymentPage />
      </Switch>
      )









      share|improve this question













      I'm trying to display the props value from the react router in the title place but I do not know if it is possible.



      If router'/dashboard', title = 'Dashboard',
      Else if router '/payment', title = 'Payment'



      class Header extends React.Component {
      state =
      title: '',
      ;

      render() {
      const title = this.state;

      return (
      <Typography>
      title
      </Typography>

      <Switch>
      <Route title="Dashboard" exact path="/dashboard" component=DashboardPage />
      <Route title="Payment" path="/payment" component=PaymentPage />
      </Switch>
      )






      javascript reactjs react-router






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 10 at 14:04









      rayman22

      418




      418






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          2
          down vote



          accepted










          Method 1: You can wrap your Header component with withRouter which provides location as prop which has pathname inside it. You can use that to change title.



          Method 2: you pass a function as prop to DashboardPage which will set state of title in Header component.



          In Header component:



          _setTitle = (title) => this.setState( title )


          Pass _setTitle as below



          <Route
          path='/dashboard'
          exact
          render=(props) => <DashboardPage ...props setTitle=this._setTitle />
          />


          In DashboardPage component's constructor execute setTitle to set the correct title as below:



          class DashboardPage extends Component 
          constructor(props)
          super(props);
          this.props.setTitle('Dashboard');




          Do the same for PaymentPage.



          This should work. Let me know if this solves your problem.






          share|improve this answer






















          • Thank u very so much! =) Its work fine!
            – rayman22
            Nov 10 at 15:26










          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',
          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%2f53239747%2fchange-state-if-i-choose-other-react-router%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          2
          down vote



          accepted










          Method 1: You can wrap your Header component with withRouter which provides location as prop which has pathname inside it. You can use that to change title.



          Method 2: you pass a function as prop to DashboardPage which will set state of title in Header component.



          In Header component:



          _setTitle = (title) => this.setState( title )


          Pass _setTitle as below



          <Route
          path='/dashboard'
          exact
          render=(props) => <DashboardPage ...props setTitle=this._setTitle />
          />


          In DashboardPage component's constructor execute setTitle to set the correct title as below:



          class DashboardPage extends Component 
          constructor(props)
          super(props);
          this.props.setTitle('Dashboard');




          Do the same for PaymentPage.



          This should work. Let me know if this solves your problem.






          share|improve this answer






















          • Thank u very so much! =) Its work fine!
            – rayman22
            Nov 10 at 15:26














          up vote
          2
          down vote



          accepted










          Method 1: You can wrap your Header component with withRouter which provides location as prop which has pathname inside it. You can use that to change title.



          Method 2: you pass a function as prop to DashboardPage which will set state of title in Header component.



          In Header component:



          _setTitle = (title) => this.setState( title )


          Pass _setTitle as below



          <Route
          path='/dashboard'
          exact
          render=(props) => <DashboardPage ...props setTitle=this._setTitle />
          />


          In DashboardPage component's constructor execute setTitle to set the correct title as below:



          class DashboardPage extends Component 
          constructor(props)
          super(props);
          this.props.setTitle('Dashboard');




          Do the same for PaymentPage.



          This should work. Let me know if this solves your problem.






          share|improve this answer






















          • Thank u very so much! =) Its work fine!
            – rayman22
            Nov 10 at 15:26












          up vote
          2
          down vote



          accepted







          up vote
          2
          down vote



          accepted






          Method 1: You can wrap your Header component with withRouter which provides location as prop which has pathname inside it. You can use that to change title.



          Method 2: you pass a function as prop to DashboardPage which will set state of title in Header component.



          In Header component:



          _setTitle = (title) => this.setState( title )


          Pass _setTitle as below



          <Route
          path='/dashboard'
          exact
          render=(props) => <DashboardPage ...props setTitle=this._setTitle />
          />


          In DashboardPage component's constructor execute setTitle to set the correct title as below:



          class DashboardPage extends Component 
          constructor(props)
          super(props);
          this.props.setTitle('Dashboard');




          Do the same for PaymentPage.



          This should work. Let me know if this solves your problem.






          share|improve this answer














          Method 1: You can wrap your Header component with withRouter which provides location as prop which has pathname inside it. You can use that to change title.



          Method 2: you pass a function as prop to DashboardPage which will set state of title in Header component.



          In Header component:



          _setTitle = (title) => this.setState( title )


          Pass _setTitle as below



          <Route
          path='/dashboard'
          exact
          render=(props) => <DashboardPage ...props setTitle=this._setTitle />
          />


          In DashboardPage component's constructor execute setTitle to set the correct title as below:



          class DashboardPage extends Component 
          constructor(props)
          super(props);
          this.props.setTitle('Dashboard');




          Do the same for PaymentPage.



          This should work. Let me know if this solves your problem.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 10 at 15:29

























          answered Nov 10 at 15:22









          Farid Ansari

          1263




          1263











          • Thank u very so much! =) Its work fine!
            – rayman22
            Nov 10 at 15:26
















          • Thank u very so much! =) Its work fine!
            – rayman22
            Nov 10 at 15:26















          Thank u very so much! =) Its work fine!
          – rayman22
          Nov 10 at 15:26




          Thank u very so much! =) Its work fine!
          – rayman22
          Nov 10 at 15:26

















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239747%2fchange-state-if-i-choose-other-react-router%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







          這個網誌中的熱門文章

          How to read a connectionString WITH PROVIDER in .NET Core?

          In R, how to develop a multiplot heatmap.2 figure showing key labels successfully

          Museum of Modern and Contemporary Art of Trento and Rovereto