this.props.history is not redirecting to homepage












0















I'm trying to redirect the user back to the index page, when a user clicks handleSubmit. However the data gets sent to the backend, but stays on the page with the user information still keyed in.



It does not render an error.



Here is the demo.



https://stackblitz.com/edit/react-h9ekc4



Navbar



import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
import SignUp from './SignUp';
import SignIn from './SignIn';
const Navbar = () => {
return(

<Router>
<div>
<nav className="navbar navbar-expand-lg navbar-light bg-light ">
<button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExample08" aria-controls="navbarsExample08" aria-expanded="false" aria-label="Toggle navigation">
<span className="navbar-toggler-icon"></span>
</button>

<div className="collapse navbar-collapse justify-content-md-center" id="navbarsExample08">
<ul className="navbar-nav">
<li className="nav-item">
<Link className="nav-link" to="/SignUp">Sign Up </Link>
</li>
<li className="nav-item">
<Link className="nav-link" to="/SignIn">Sign In </Link>
</li>

</ul>
</div>
</nav>
<Route path="/SignUp" component={SignUp} />
<Route path="/SignIn" component={SignIn} />

</div>
</Router>
);

}

export default Navbar;


SignUp.js



import React, {Component} from 'react';
import { withRouter } from "react-router-dom";
import { connect } from "react-redux";
import {signUp ,onEmailSignUpChangeAction,onPasswordSignUpChangeAction} from '../actions/';
class SignUp extends Component {
state = {
email: "",
password: ""
}

// onChange = (e) =>{
// this.setState({
// [e.target.name] : e.target.value
// })
// }
handleSubmit = (e) =>{
e.preventDefault();
const register = this.props.signUp();
// this.props.history not working
(register === true) && this.props.history.push('/');
console.log(this.state);

}
render() {
return (
<div className="container">
<div className="row">
<div className="col-md-6">
<h1>Sign Up</h1>
<div>
<div className="form-group">
<label htmlFor="exampleInputEmail1">Email address</label>
<input
type="email"
className="form-control"
id="email"
onChange={this.props.onEmailSignUpChangeAction}
aria-describedby="emailHelp"
value={this.props.emailSignUp}
placeholder="Enter email"/>
<small id="emailHelp" className="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div className="form-group">
<label htmlFor="exampleInputPassword1">Password</label>
<input
type="password"
className="form-control"
id="password"
value={this.props.passwordSignUp}
onChange={this.props.onPasswordSignUpChangeAction}
placeholder="Password"/>
</div>

<button type="submit" onClick={this.handleSubmit} className="btn btn-primary">Submit</button>
</div>
</div>

</div>
</div>

);
}

}

const mapStateToProps = (state) => ({
user: state.auth.user,
emailSignUp:state.signUpAuth.emailSignUp,
passwordSignUp:state.signUpAuth.passwordSignUp

})

const mapDispatchToProps = (dispatch) => ({
signUp: () => dispatch(signUp()),
onEmailSignUpChangeAction: (event) => dispatch(onEmailSignUpChangeAction(event.target.value)),
onPasswordSignUpChangeAction: (event) => dispatch(onPasswordSignUpChangeAction(event.target.value)),
});


export default withRouter(connect(mapStateToProps, mapDispatchToProps)(SignUp));









share|improve this question



























    0















    I'm trying to redirect the user back to the index page, when a user clicks handleSubmit. However the data gets sent to the backend, but stays on the page with the user information still keyed in.



    It does not render an error.



    Here is the demo.



    https://stackblitz.com/edit/react-h9ekc4



    Navbar



    import React, { Component } from 'react';
    import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
    import SignUp from './SignUp';
    import SignIn from './SignIn';
    const Navbar = () => {
    return(

    <Router>
    <div>
    <nav className="navbar navbar-expand-lg navbar-light bg-light ">
    <button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExample08" aria-controls="navbarsExample08" aria-expanded="false" aria-label="Toggle navigation">
    <span className="navbar-toggler-icon"></span>
    </button>

    <div className="collapse navbar-collapse justify-content-md-center" id="navbarsExample08">
    <ul className="navbar-nav">
    <li className="nav-item">
    <Link className="nav-link" to="/SignUp">Sign Up </Link>
    </li>
    <li className="nav-item">
    <Link className="nav-link" to="/SignIn">Sign In </Link>
    </li>

    </ul>
    </div>
    </nav>
    <Route path="/SignUp" component={SignUp} />
    <Route path="/SignIn" component={SignIn} />

    </div>
    </Router>
    );

    }

    export default Navbar;


    SignUp.js



    import React, {Component} from 'react';
    import { withRouter } from "react-router-dom";
    import { connect } from "react-redux";
    import {signUp ,onEmailSignUpChangeAction,onPasswordSignUpChangeAction} from '../actions/';
    class SignUp extends Component {
    state = {
    email: "",
    password: ""
    }

    // onChange = (e) =>{
    // this.setState({
    // [e.target.name] : e.target.value
    // })
    // }
    handleSubmit = (e) =>{
    e.preventDefault();
    const register = this.props.signUp();
    // this.props.history not working
    (register === true) && this.props.history.push('/');
    console.log(this.state);

    }
    render() {
    return (
    <div className="container">
    <div className="row">
    <div className="col-md-6">
    <h1>Sign Up</h1>
    <div>
    <div className="form-group">
    <label htmlFor="exampleInputEmail1">Email address</label>
    <input
    type="email"
    className="form-control"
    id="email"
    onChange={this.props.onEmailSignUpChangeAction}
    aria-describedby="emailHelp"
    value={this.props.emailSignUp}
    placeholder="Enter email"/>
    <small id="emailHelp" className="form-text text-muted">We'll never share your email with anyone else.</small>
    </div>
    <div className="form-group">
    <label htmlFor="exampleInputPassword1">Password</label>
    <input
    type="password"
    className="form-control"
    id="password"
    value={this.props.passwordSignUp}
    onChange={this.props.onPasswordSignUpChangeAction}
    placeholder="Password"/>
    </div>

    <button type="submit" onClick={this.handleSubmit} className="btn btn-primary">Submit</button>
    </div>
    </div>

    </div>
    </div>

    );
    }

    }

    const mapStateToProps = (state) => ({
    user: state.auth.user,
    emailSignUp:state.signUpAuth.emailSignUp,
    passwordSignUp:state.signUpAuth.passwordSignUp

    })

    const mapDispatchToProps = (dispatch) => ({
    signUp: () => dispatch(signUp()),
    onEmailSignUpChangeAction: (event) => dispatch(onEmailSignUpChangeAction(event.target.value)),
    onPasswordSignUpChangeAction: (event) => dispatch(onPasswordSignUpChangeAction(event.target.value)),
    });


    export default withRouter(connect(mapStateToProps, mapDispatchToProps)(SignUp));









    share|improve this question

























      0












      0








      0








      I'm trying to redirect the user back to the index page, when a user clicks handleSubmit. However the data gets sent to the backend, but stays on the page with the user information still keyed in.



      It does not render an error.



      Here is the demo.



      https://stackblitz.com/edit/react-h9ekc4



      Navbar



      import React, { Component } from 'react';
      import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
      import SignUp from './SignUp';
      import SignIn from './SignIn';
      const Navbar = () => {
      return(

      <Router>
      <div>
      <nav className="navbar navbar-expand-lg navbar-light bg-light ">
      <button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExample08" aria-controls="navbarsExample08" aria-expanded="false" aria-label="Toggle navigation">
      <span className="navbar-toggler-icon"></span>
      </button>

      <div className="collapse navbar-collapse justify-content-md-center" id="navbarsExample08">
      <ul className="navbar-nav">
      <li className="nav-item">
      <Link className="nav-link" to="/SignUp">Sign Up </Link>
      </li>
      <li className="nav-item">
      <Link className="nav-link" to="/SignIn">Sign In </Link>
      </li>

      </ul>
      </div>
      </nav>
      <Route path="/SignUp" component={SignUp} />
      <Route path="/SignIn" component={SignIn} />

      </div>
      </Router>
      );

      }

      export default Navbar;


      SignUp.js



      import React, {Component} from 'react';
      import { withRouter } from "react-router-dom";
      import { connect } from "react-redux";
      import {signUp ,onEmailSignUpChangeAction,onPasswordSignUpChangeAction} from '../actions/';
      class SignUp extends Component {
      state = {
      email: "",
      password: ""
      }

      // onChange = (e) =>{
      // this.setState({
      // [e.target.name] : e.target.value
      // })
      // }
      handleSubmit = (e) =>{
      e.preventDefault();
      const register = this.props.signUp();
      // this.props.history not working
      (register === true) && this.props.history.push('/');
      console.log(this.state);

      }
      render() {
      return (
      <div className="container">
      <div className="row">
      <div className="col-md-6">
      <h1>Sign Up</h1>
      <div>
      <div className="form-group">
      <label htmlFor="exampleInputEmail1">Email address</label>
      <input
      type="email"
      className="form-control"
      id="email"
      onChange={this.props.onEmailSignUpChangeAction}
      aria-describedby="emailHelp"
      value={this.props.emailSignUp}
      placeholder="Enter email"/>
      <small id="emailHelp" className="form-text text-muted">We'll never share your email with anyone else.</small>
      </div>
      <div className="form-group">
      <label htmlFor="exampleInputPassword1">Password</label>
      <input
      type="password"
      className="form-control"
      id="password"
      value={this.props.passwordSignUp}
      onChange={this.props.onPasswordSignUpChangeAction}
      placeholder="Password"/>
      </div>

      <button type="submit" onClick={this.handleSubmit} className="btn btn-primary">Submit</button>
      </div>
      </div>

      </div>
      </div>

      );
      }

      }

      const mapStateToProps = (state) => ({
      user: state.auth.user,
      emailSignUp:state.signUpAuth.emailSignUp,
      passwordSignUp:state.signUpAuth.passwordSignUp

      })

      const mapDispatchToProps = (dispatch) => ({
      signUp: () => dispatch(signUp()),
      onEmailSignUpChangeAction: (event) => dispatch(onEmailSignUpChangeAction(event.target.value)),
      onPasswordSignUpChangeAction: (event) => dispatch(onPasswordSignUpChangeAction(event.target.value)),
      });


      export default withRouter(connect(mapStateToProps, mapDispatchToProps)(SignUp));









      share|improve this question














      I'm trying to redirect the user back to the index page, when a user clicks handleSubmit. However the data gets sent to the backend, but stays on the page with the user information still keyed in.



      It does not render an error.



      Here is the demo.



      https://stackblitz.com/edit/react-h9ekc4



      Navbar



      import React, { Component } from 'react';
      import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
      import SignUp from './SignUp';
      import SignIn from './SignIn';
      const Navbar = () => {
      return(

      <Router>
      <div>
      <nav className="navbar navbar-expand-lg navbar-light bg-light ">
      <button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExample08" aria-controls="navbarsExample08" aria-expanded="false" aria-label="Toggle navigation">
      <span className="navbar-toggler-icon"></span>
      </button>

      <div className="collapse navbar-collapse justify-content-md-center" id="navbarsExample08">
      <ul className="navbar-nav">
      <li className="nav-item">
      <Link className="nav-link" to="/SignUp">Sign Up </Link>
      </li>
      <li className="nav-item">
      <Link className="nav-link" to="/SignIn">Sign In </Link>
      </li>

      </ul>
      </div>
      </nav>
      <Route path="/SignUp" component={SignUp} />
      <Route path="/SignIn" component={SignIn} />

      </div>
      </Router>
      );

      }

      export default Navbar;


      SignUp.js



      import React, {Component} from 'react';
      import { withRouter } from "react-router-dom";
      import { connect } from "react-redux";
      import {signUp ,onEmailSignUpChangeAction,onPasswordSignUpChangeAction} from '../actions/';
      class SignUp extends Component {
      state = {
      email: "",
      password: ""
      }

      // onChange = (e) =>{
      // this.setState({
      // [e.target.name] : e.target.value
      // })
      // }
      handleSubmit = (e) =>{
      e.preventDefault();
      const register = this.props.signUp();
      // this.props.history not working
      (register === true) && this.props.history.push('/');
      console.log(this.state);

      }
      render() {
      return (
      <div className="container">
      <div className="row">
      <div className="col-md-6">
      <h1>Sign Up</h1>
      <div>
      <div className="form-group">
      <label htmlFor="exampleInputEmail1">Email address</label>
      <input
      type="email"
      className="form-control"
      id="email"
      onChange={this.props.onEmailSignUpChangeAction}
      aria-describedby="emailHelp"
      value={this.props.emailSignUp}
      placeholder="Enter email"/>
      <small id="emailHelp" className="form-text text-muted">We'll never share your email with anyone else.</small>
      </div>
      <div className="form-group">
      <label htmlFor="exampleInputPassword1">Password</label>
      <input
      type="password"
      className="form-control"
      id="password"
      value={this.props.passwordSignUp}
      onChange={this.props.onPasswordSignUpChangeAction}
      placeholder="Password"/>
      </div>

      <button type="submit" onClick={this.handleSubmit} className="btn btn-primary">Submit</button>
      </div>
      </div>

      </div>
      </div>

      );
      }

      }

      const mapStateToProps = (state) => ({
      user: state.auth.user,
      emailSignUp:state.signUpAuth.emailSignUp,
      passwordSignUp:state.signUpAuth.passwordSignUp

      })

      const mapDispatchToProps = (dispatch) => ({
      signUp: () => dispatch(signUp()),
      onEmailSignUpChangeAction: (event) => dispatch(onEmailSignUpChangeAction(event.target.value)),
      onPasswordSignUpChangeAction: (event) => dispatch(onPasswordSignUpChangeAction(event.target.value)),
      });


      export default withRouter(connect(mapStateToProps, mapDispatchToProps)(SignUp));






      javascript reactjs redux






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 2 at 5:03









      BARNOWLBARNOWL

      4841821




      4841821
























          2 Answers
          2






          active

          oldest

          votes


















          0














          since your action signUp() is not returning anything.
          register = this.props.signUp() is always undefined and hence the below line never executes..



          (register === true) && this.props.history.push('/');



          try returning true/false based on your logic and then try running your code again



          enter image description here






          share|improve this answer

































            0














            Your dispatch call this.props.signUp() is returning undefined, hence this.props.history.push('/') is not executing.



            just tried to add a console.log



            handleSubmit = (e) =>{
            e.preventDefault();
            const register = this.props.signUp();
            console.log(register);
            (register === true) && this.props.history.push('/');
            console.log(this.state);

            }


            enter image description here



            register dispatch should be returning boolean.






            share|improve this answer


























            • I still get a unefined error, however i see it show up on the firebase backend.

              – BARNOWL
              Jan 2 at 16:00













            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%2f54001442%2fthis-props-history-is-not-redirecting-to-homepage%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









            0














            since your action signUp() is not returning anything.
            register = this.props.signUp() is always undefined and hence the below line never executes..



            (register === true) && this.props.history.push('/');



            try returning true/false based on your logic and then try running your code again



            enter image description here






            share|improve this answer






























              0














              since your action signUp() is not returning anything.
              register = this.props.signUp() is always undefined and hence the below line never executes..



              (register === true) && this.props.history.push('/');



              try returning true/false based on your logic and then try running your code again



              enter image description here






              share|improve this answer




























                0












                0








                0







                since your action signUp() is not returning anything.
                register = this.props.signUp() is always undefined and hence the below line never executes..



                (register === true) && this.props.history.push('/');



                try returning true/false based on your logic and then try running your code again



                enter image description here






                share|improve this answer















                since your action signUp() is not returning anything.
                register = this.props.signUp() is always undefined and hence the below line never executes..



                (register === true) && this.props.history.push('/');



                try returning true/false based on your logic and then try running your code again



                enter image description here







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Jan 2 at 5:40

























                answered Jan 2 at 5:15









                Vikas VermaVikas Verma

                345




                345

























                    0














                    Your dispatch call this.props.signUp() is returning undefined, hence this.props.history.push('/') is not executing.



                    just tried to add a console.log



                    handleSubmit = (e) =>{
                    e.preventDefault();
                    const register = this.props.signUp();
                    console.log(register);
                    (register === true) && this.props.history.push('/');
                    console.log(this.state);

                    }


                    enter image description here



                    register dispatch should be returning boolean.






                    share|improve this answer


























                    • I still get a unefined error, however i see it show up on the firebase backend.

                      – BARNOWL
                      Jan 2 at 16:00


















                    0














                    Your dispatch call this.props.signUp() is returning undefined, hence this.props.history.push('/') is not executing.



                    just tried to add a console.log



                    handleSubmit = (e) =>{
                    e.preventDefault();
                    const register = this.props.signUp();
                    console.log(register);
                    (register === true) && this.props.history.push('/');
                    console.log(this.state);

                    }


                    enter image description here



                    register dispatch should be returning boolean.






                    share|improve this answer


























                    • I still get a unefined error, however i see it show up on the firebase backend.

                      – BARNOWL
                      Jan 2 at 16:00
















                    0












                    0








                    0







                    Your dispatch call this.props.signUp() is returning undefined, hence this.props.history.push('/') is not executing.



                    just tried to add a console.log



                    handleSubmit = (e) =>{
                    e.preventDefault();
                    const register = this.props.signUp();
                    console.log(register);
                    (register === true) && this.props.history.push('/');
                    console.log(this.state);

                    }


                    enter image description here



                    register dispatch should be returning boolean.






                    share|improve this answer















                    Your dispatch call this.props.signUp() is returning undefined, hence this.props.history.push('/') is not executing.



                    just tried to add a console.log



                    handleSubmit = (e) =>{
                    e.preventDefault();
                    const register = this.props.signUp();
                    console.log(register);
                    (register === true) && this.props.history.push('/');
                    console.log(this.state);

                    }


                    enter image description here



                    register dispatch should be returning boolean.







                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Jan 2 at 6:07

























                    answered Jan 2 at 5:46









                    Praveen Rao Chavan.GPraveen Rao Chavan.G

                    1,534719




                    1,534719













                    • I still get a unefined error, however i see it show up on the firebase backend.

                      – BARNOWL
                      Jan 2 at 16:00





















                    • I still get a unefined error, however i see it show up on the firebase backend.

                      – BARNOWL
                      Jan 2 at 16:00



















                    I still get a unefined error, however i see it show up on the firebase backend.

                    – BARNOWL
                    Jan 2 at 16:00







                    I still get a unefined error, however i see it show up on the firebase backend.

                    – BARNOWL
                    Jan 2 at 16:00




















                    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%2f54001442%2fthis-props-history-is-not-redirecting-to-homepage%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

                    Monofisismo

                    Angular Downloading a file using contenturl with Basic Authentication

                    Olmecas