React无法获取全局变量的值

问题描述

我正在学习React,但我不明白如何制作诸如全局应用状态之类的东西。 我做了一个window.appState杂货,但我无法在组件内部获取appState。它抛出一个错误appState未定义。 appState初始化看起来像:

import React from 'react';
import ReactDOM from 'react-dom';
import './assets/index.scss';
import App from './App';
import {
    browserRouter as Router
} from "react-router-dom";


let appState = {
    accesstoken: ''
}

ReactDOM.render(
  <React.StrictMode>
    <Router>
        <App />
    </Router>
  </React.StrictMode>,document.getElementById('root')
);

如果我尝试访问组件中的appState,则未定义。

class Home extends React.Component
{
    constructor(props)
    {
        super(props)

        // window.appState is undefined???
        if( ! window.appState.accesstoken ) this.props.history.push('/login')
    }

    .....

}

我在做什么错?非常感谢。

解决方法

设置 function getServers() { var url = "@Url.Action("getJsonList")"; $.get(url,function (data) { $("#ajaxStage").empty();//clears out the section so ajax doesn't append same info $("#ajaxProd").empty();//clears out the section so ajax doesn't append same info for (var st in data) { if (data.hasOwnProperty(st)) { $("#ajaxStage").append( "<li>" + "<label>" + "<input class=\"hummingbird-end-node\" id=\"xnode-0-1-" + st + "\" data-id=\"custom-0-1-1\" type=\"checkbox\" />" + data[st].ServerName + "</label>" + "</li>" );//ends append }//ends if }//ends for in });//ends function as parmeter }//ends parent function $("#idRbStage").on("click",getServers); 可以在文件范围内进行设置。如果要在let appState = {}上进行设置,以使其具有全局性,请改成window