Javascript 在React中注册后,如何转到新路径

Javascript 在React中注册后,如何转到新路径,javascript,reactjs,electron,Javascript,Reactjs,Electron,我是新手,我正在开发一个电子应用程序 在下面的代码中,我检查是否有已登录的用户,如果有,我呈现Home,如果他们尚未登录或注册,我呈现SignIn (此代码位于app.js) 谢谢 假设您不想使用react路由器,解决此问题的一种方法是使用更高的组件,通过检查cookie来呈现登录或主页。此组件可能具有状态值loggedIn。例如: class Application extends React.Component { constructor(props) { super(props

我是新手,我正在开发一个电子应用程序

在下面的代码中,我检查是否有已登录的用户,如果有,我呈现
Home
,如果他们尚未登录或注册,我呈现
SignIn

(此代码位于
app.js


谢谢

假设您不想使用
react路由器
,解决此问题的一种方法是使用更高的组件,通过检查cookie来呈现
登录
主页
。此组件可能具有状态值
loggedIn
。例如:

class Application extends React.Component {
  constructor(props) {
    super(props);
    this.handleLogin = this.handleLogin.bind(this);
    const isLoggedIn = JSON.parse(localStorage.cookies).user_id === undefined;
    this.state = {
      loggedIn: isLoggedIn,
    }
  }
  handleLogin() {
    //if login was successful, do:
    this.setState({ loggedIn: true })
  }
  render() {
    return (
      <div>
        {
          this.state.loggedIn
          ? <Home />
          : <LoggedIn handleLogin={this.handleLogin}>
        }
      </div>
    )
  }
}
这将更新父状态并重新提交相应的组件

也需要改变

render((
    <Provider store={store}>
        <Application />
    </Provider>
), document.getElementById('content'));
渲染((
),document.getElementById('content');

假设您不想使用
react router
,解决此问题的一种方法是使用更高的组件,通过检查Cookie来呈现
登录
主页
。此组件可能具有状态值
loggedIn
。例如:

class Application extends React.Component {
  constructor(props) {
    super(props);
    this.handleLogin = this.handleLogin.bind(this);
    const isLoggedIn = JSON.parse(localStorage.cookies).user_id === undefined;
    this.state = {
      loggedIn: isLoggedIn,
    }
  }
  handleLogin() {
    //if login was successful, do:
    this.setState({ loggedIn: true })
  }
  render() {
    return (
      <div>
        {
          this.state.loggedIn
          ? <Home />
          : <LoggedIn handleLogin={this.handleLogin}>
        }
      </div>
    )
  }
}
这将更新父状态并重新提交相应的组件

也需要改变

render((
    <Provider store={store}>
        <Application />
    </Provider>
), document.getElementById('content'));
渲染((
),document.getElementById('content');

本地存储。cookies
更新是否正确?是的,因为如果我在注册后用键盘刷新,我会被带到
主页
你能试着在
标签内设置条件(
如果本地存储…等
)吗?你到底在用路由器吗?@BravoZulu我没有。我不相信Electron和路由器可以一起工作,但我可能是错的是
localStorage。cookies
更新是否正确?是的,因为如果我在注册后刷新键盘,我会被带到
主页
你能试着设置条件吗(
如果localStorage…等等
)在
标签内?你在使用路由器吗?@BravoZulu我没有。我不相信电子和路由器一起工作,但我可能错了,谢谢斯蒂芬。这真的很有帮助。一个小的编辑,然后我会接受这个答案,我需要像这样传递this.props.handleLogin
this.props.dispatch(注册(this.state.registration,this.props.handleLogin))action.callback()
在我的
/auth/sagas.js
文件中,以便API调用有时间完成,返回值,然后在localStorage中设置它,然后继续。在设置localStorage之前,您的代码按原样调用重新呈现。再次谢谢你,最新消息。你能把你的传奇故事档案寄出去吗?我对图书馆不熟悉,我感兴趣的是你是如何触发呼叫的。这真的很有帮助。一个小的编辑,然后我会接受这个答案,我需要像这样传递this.props.handleLogin
this.props.dispatch(注册(this.state.registration,this.props.handleLogin))action.callback()
在我的
/auth/sagas.js
文件中,以便API调用有时间完成,返回值,然后在localStorage中设置它,然后继续。在设置localStorage之前,您的代码按原样调用重新呈现。再次谢谢你,最新消息。你能把你的传奇故事档案寄出去吗?我不熟悉这个库,我对如何触发回调感兴趣
render((
    <Provider store={store}>
        <Application />
    </Provider>
), document.getElementById('content'));