javascript - 提交后如何在handleSubmit方法中重新加载页面/路由器?

标签 javascript reactjs

我有一个带有登录表单的组件。

我需要做的是让它在用户单击提交按钮后重新加载页面/路由。

这样做的原因是,单击提交按钮后,需要对导航组件进行一些更改,而导航组件不是这个。

您可以看到我使用了 sessionStorage.setItem('something', 'somevalue');,然后导航组件会读取它并进行一些更改。

目前要查看更改,我需要重新加载浏览器。

这是代码:

class Login extends Component {
  constructor(props) {
    super(props);
    this.state = {
      username: '',
      password: '',
    };

    this.onUsernameChange = this.onUsernameChange.bind(this);
    this.onPasswordChange = this.onPasswordChange.bind(this);
  }

  onUsernameChange(event) {
    this.setState({ username: event.target.value });
  }

  onPasswordChange(event) {
    this.setState({ password: event.target.value });
  }

  handleSubmit() { 
    event.preventDefault();
    sessionStorage.setItem('something', 'somevalue');
    // reload the page here or re-router to current page/router

  }

  render() {

    return (
        <div>
          <form className="form-signin" onSubmit={this.handleSubmit}>
            <input type="text" value={this.username} onChange={this.onUsernameChange} />
            <input type="password" value={this.password} onChange={this.onPasswordChange} />
            <input type="submit" value="Submit" />
          </form>
        </div>
    );
  }
}

export default Login;

如何解决这个问题?

最佳答案

一个好主意是在路由中使用 onEnter 回调或订阅 sessionStore 上的更改(这是一个 redux 存储吗?)检查更新,并允许该信息通过应用程序向下传播。

但是,要回答有关导航的问题,您可以使用以下任一方法:

location.reload() - location 是标准 JavaScript(浏览器)对象

或使用提供的 withRouter 组件增强器注入(inject) React Router 的 router

import { withRouter } from 'react-router'

...

export default withRouter(Login);

router 将在 props 中可用 - 您可以像这样使用它

const { router } = this.props
router.push('/some/route')

这将触发 View 更改而无需重新加载窗口(这就是为什么我建议确保您可以在不重新加载页面的情况下更新组件关于 session 的知识)

编辑 - 顺便说一句,eventhandleSubmit中未定义

关于javascript - 提交后如何在handleSubmit方法中重新加载页面/路由器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44834953/

相关文章:

javascript - 我正确使用 Promise.all 吗?

javascript - 如何将多行字符串打印到 blob 中?

javascript - Babel - 无法读取未定义的属性 'TYPED_ARRAY_SUPPORT'

javascript - 如何使用 Javascript 使用 Handlebars.registerPartial

javascript - 忽略图像中透明部分的鼠标交互并将其分配给下图

javascript - Node.js csvtojson - 在函数之外返回结果

javascript - react-datepicker 样式未应用于已部署的构建

javascript - 使用 ReactDOM.render 时的不变违规错误

node.js - Npm启动错误: events. js:292抛出未处理的异常

javascript - 请求后端输入更改数据的有效方法