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>
)
javascript reactjs react-router
add a comment |
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>
)
javascript reactjs react-router
add a comment |
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>
)
javascript reactjs react-router
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
javascript reactjs react-router
asked Nov 10 at 14:04
rayman22
418
418
add a comment |
add a comment |
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.
Thank u very so much! =) Its work fine!
– rayman22
Nov 10 at 15:26
add a comment |
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.
Thank u very so much! =) Its work fine!
– rayman22
Nov 10 at 15:26
add a comment |
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.
Thank u very so much! =) Its work fine!
– rayman22
Nov 10 at 15:26
add a comment |
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.
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.
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
add a comment |
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
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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