【问题标题】:How to access global (window.) variable in React JS如何在 React JS 中访问全局(窗口)变量
【发布时间】:2020-06-14 00:26:55
【问题描述】:

我正在使用 React JS。我有登录页面,它从端点接收数据作为响应。我将来自响应的不同组件存储在一个窗口中。变量,因为它们必须在不同的组件中访问。这仅在加载新组件时才有效,在它刷新窗口之后。变量变为空。

这是我的登录组件:

handleSubmit(event) {
event.preventDefault()

axios
  .post("EDN POINT LINK",
    {
      email: this.state.email,
      password: this.state.password

    })
  .then((response) => {

    console.log(response);

    // STORING ID
    window.id = window.responseDetails.map(
      mID => mID.id
    )
    console.log('ID is: ' + window.id);

    // STORING TOKEN
    window.token = window.responseDetails.map(
      mToken => mToken.token
    )
    console.log('TOKEN is: ' + window.token);

    // STORING ERROR
    window.error = window.responseDetails.map(
      mError => mError.error
    )
    console.log('ERROR is: ' + window.error);

这是我访问窗口的组件。变量:

 render() {

    console.log(window.id)
    return (

    )
}

如果我有更多时间,我会实现 Redux 或 Context 之类的东西,但不幸的是我没有这样做,因为我对 React JS 还很陌生。

【问题讨论】:

  • 继续使用上下文(相信我,这比您想象的要容易)或提升您的状态。如果您重新加载页面,window 不会保留您的数据。

标签: reactjs global-variables global


【解决方案1】:

请不要在窗口中存储持久数据!

Window 是全局的,但它的范围与新的页面加载有关。

要获得一致的数据,您应该考虑使用持久性存储,例如 localStorage、sessionStorage 和 cookie。

在这里查看更多示例What is the difference between localStorage, sessionStorage, session and cookies?

【讨论】:

  • 是的,现在确实有意义。谢谢你的回答
  • 没问题的人,如果您愿意,请随时为答案投票?
猜你喜欢
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多