using PrivateRoute in React











up vote
0
down vote

favorite












In this code, authed state becomes true when the user logs in, but auth used in privateRoute does not become true according to the below code.



checkauth() {
this.setState({
authed:true
})
}

render() {
function PrivateRoute ({component: Component, auth, ...rest}) {
return (
<Route
{...rest}
render={(props) => auth === true
? <Component {...props} />
: <Redirect to={{pathname: '/', state: {from: props.location}}} />}
/>
)
}

return (
<div>
<Router history={browserHistory}>
<div>
<Navbar/>
<Switch>
<Route path="/" component={Firstpage} exact > </Route>
<Route path="/signup" component={Signup}> </Route>
<Route path="/shop/:id" component={Shop}></Route>
<Route path="/login" render={(props) => <Login {...props} checkauth=
{this.checkauth.bind(this)} />}> </Route>
<PrivateRoute path='/newpath' component={Welcome} auth=
{this.state.authed}/>
</Switch>
</div>
</Router>
</div>
);
}


How can I use the states of the App component in the PrivateRoute function or is there any other method to do this?










share|improve this question
























  • Please share your checkauth() method.
    – Levi Payne
    Nov 10 at 14:09










  • Ok..I edited the code
    – Sandz
    Nov 10 at 14:11










  • I don't see anything that looks off here. Perhaps share your Login component as well. Also, what debugging steps have you taken? How do you know that auth is not true?
    – Levi Payne
    Nov 10 at 14:29










  • Duplicate: stackoverflow.com/questions/53197248/…
    – matt carlotta
    Nov 10 at 23:21















up vote
0
down vote

favorite












In this code, authed state becomes true when the user logs in, but auth used in privateRoute does not become true according to the below code.



checkauth() {
this.setState({
authed:true
})
}

render() {
function PrivateRoute ({component: Component, auth, ...rest}) {
return (
<Route
{...rest}
render={(props) => auth === true
? <Component {...props} />
: <Redirect to={{pathname: '/', state: {from: props.location}}} />}
/>
)
}

return (
<div>
<Router history={browserHistory}>
<div>
<Navbar/>
<Switch>
<Route path="/" component={Firstpage} exact > </Route>
<Route path="/signup" component={Signup}> </Route>
<Route path="/shop/:id" component={Shop}></Route>
<Route path="/login" render={(props) => <Login {...props} checkauth=
{this.checkauth.bind(this)} />}> </Route>
<PrivateRoute path='/newpath' component={Welcome} auth=
{this.state.authed}/>
</Switch>
</div>
</Router>
</div>
);
}


How can I use the states of the App component in the PrivateRoute function or is there any other method to do this?










share|improve this question
























  • Please share your checkauth() method.
    – Levi Payne
    Nov 10 at 14:09










  • Ok..I edited the code
    – Sandz
    Nov 10 at 14:11










  • I don't see anything that looks off here. Perhaps share your Login component as well. Also, what debugging steps have you taken? How do you know that auth is not true?
    – Levi Payne
    Nov 10 at 14:29










  • Duplicate: stackoverflow.com/questions/53197248/…
    – matt carlotta
    Nov 10 at 23:21













up vote
0
down vote

favorite









up vote
0
down vote

favorite











In this code, authed state becomes true when the user logs in, but auth used in privateRoute does not become true according to the below code.



checkauth() {
this.setState({
authed:true
})
}

render() {
function PrivateRoute ({component: Component, auth, ...rest}) {
return (
<Route
{...rest}
render={(props) => auth === true
? <Component {...props} />
: <Redirect to={{pathname: '/', state: {from: props.location}}} />}
/>
)
}

return (
<div>
<Router history={browserHistory}>
<div>
<Navbar/>
<Switch>
<Route path="/" component={Firstpage} exact > </Route>
<Route path="/signup" component={Signup}> </Route>
<Route path="/shop/:id" component={Shop}></Route>
<Route path="/login" render={(props) => <Login {...props} checkauth=
{this.checkauth.bind(this)} />}> </Route>
<PrivateRoute path='/newpath' component={Welcome} auth=
{this.state.authed}/>
</Switch>
</div>
</Router>
</div>
);
}


How can I use the states of the App component in the PrivateRoute function or is there any other method to do this?










share|improve this question















In this code, authed state becomes true when the user logs in, but auth used in privateRoute does not become true according to the below code.



checkauth() {
this.setState({
authed:true
})
}

render() {
function PrivateRoute ({component: Component, auth, ...rest}) {
return (
<Route
{...rest}
render={(props) => auth === true
? <Component {...props} />
: <Redirect to={{pathname: '/', state: {from: props.location}}} />}
/>
)
}

return (
<div>
<Router history={browserHistory}>
<div>
<Navbar/>
<Switch>
<Route path="/" component={Firstpage} exact > </Route>
<Route path="/signup" component={Signup}> </Route>
<Route path="/shop/:id" component={Shop}></Route>
<Route path="/login" render={(props) => <Login {...props} checkauth=
{this.checkauth.bind(this)} />}> </Route>
<PrivateRoute path='/newpath' component={Welcome} auth=
{this.state.authed}/>
</Switch>
</div>
</Router>
</div>
);
}


How can I use the states of the App component in the PrivateRoute function or is there any other method to do this?







reactjs react-router-v4






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 10 at 15:45









c-chavez

1,92821427




1,92821427










asked Nov 10 at 13:58









Sandz

45




45












  • Please share your checkauth() method.
    – Levi Payne
    Nov 10 at 14:09










  • Ok..I edited the code
    – Sandz
    Nov 10 at 14:11










  • I don't see anything that looks off here. Perhaps share your Login component as well. Also, what debugging steps have you taken? How do you know that auth is not true?
    – Levi Payne
    Nov 10 at 14:29










  • Duplicate: stackoverflow.com/questions/53197248/…
    – matt carlotta
    Nov 10 at 23:21


















  • Please share your checkauth() method.
    – Levi Payne
    Nov 10 at 14:09










  • Ok..I edited the code
    – Sandz
    Nov 10 at 14:11










  • I don't see anything that looks off here. Perhaps share your Login component as well. Also, what debugging steps have you taken? How do you know that auth is not true?
    – Levi Payne
    Nov 10 at 14:29










  • Duplicate: stackoverflow.com/questions/53197248/…
    – matt carlotta
    Nov 10 at 23:21
















Please share your checkauth() method.
– Levi Payne
Nov 10 at 14:09




Please share your checkauth() method.
– Levi Payne
Nov 10 at 14:09












Ok..I edited the code
– Sandz
Nov 10 at 14:11




Ok..I edited the code
– Sandz
Nov 10 at 14:11












I don't see anything that looks off here. Perhaps share your Login component as well. Also, what debugging steps have you taken? How do you know that auth is not true?
– Levi Payne
Nov 10 at 14:29




I don't see anything that looks off here. Perhaps share your Login component as well. Also, what debugging steps have you taken? How do you know that auth is not true?
– Levi Payne
Nov 10 at 14:29












Duplicate: stackoverflow.com/questions/53197248/…
– matt carlotta
Nov 10 at 23:21




Duplicate: stackoverflow.com/questions/53197248/…
– matt carlotta
Nov 10 at 23:21

















active

oldest

votes











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%2f53239696%2fusing-privateroute-in-react%23new-answer', 'question_page');
}
);

Post as a guest





































active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















 

draft saved


draft discarded



















































 


draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239696%2fusing-privateroute-in-react%23new-answer', 'question_page');
}
);

Post as a guest




















































































Popular posts from this blog

Florida Star v. B. J. F.

Danny Elfman

Retrieve a Users Dashboard in Tumblr with R and TumblR. Oauth Issues