window.enableMouseFlow не определен в componentDidMount (), но доступен в render () - PullRequest
0 голосов
/ 07 сентября 2018

Привет, у меня есть этот кусок кода

    export class CompanyAccountsList extends Component {
        constructor(props) {
            super(props);
        }

        getChildContext() {
            return { prefix: 'company_accounting' };
        }

        componentDidMount() {
            //getting window.enableMouseFlow in this console
            console.log(window);

            //can't get window.enableMouseFlow in this console
            console.log(window.enableMouseFlow);

            if (window.enableMouseFlow) {
                //This codes are never executing as the condition is undefined
                enableMouseFlow();
                setMouseFlowTag('new_company_accounting');
            }
        }

        render() {
    //Rendering codes are here
    }

При начальной загрузке страницы я получаю результат как

Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …} CompanyAccountsList.jsx?a48a:36
undefined

В утешенном «оконном объекте» «enableMouseFlow» доступен, но когда я пытаюсь получить его как console.log (window.enableMouseFlow); это утешительно как «неопределенный»

Если я утешаю его в методе render (), я получаю результат как:

ƒ () {
          sessionStorage.setItem('mf_start', '1');
          activateMouseflow();
      }

Так что, как суммирование, я не могу найти 'window.enableMouseFlow' в componentDidMount ()

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

@ Алан Да, на самом деле я получаю окно в componentDidMount, даже если я консольное окно, я могу получить enableMouseFlow в консоли.

console.log(window);

Output: 
//window.enableMouseFlow is available

но если я утешу только window.enableMouseFlow, я получаю его как неопределенное

console.log(window.enableMouseFlow);

Output:
//Undefined
////window.enableMouseFlow is not available

Во-вторых, да, я думаю, то же самое, что и вы, enablemouseflow добавляется в окно после создания страницы в каком-то другом скрипте, но у меня есть несколько других подобных страниц реагировать, где я могу получить console.log (window.enableMouseFlow) в componentDidMount

К вашему сведению, после заполнения страницы в консоли браузера я могу получить console.log (window.enableMouseFlow);

На самом деле window.enablemouseflow загружается чуть позже, см. Скриншот: скриншот консоли

0 голосов
/ 07 сентября 2018

Я думаю, console.log передает ссылку на окно, и поэтому она может быть решена во время ее фактического входа в консоль. Вы можете попробовать

const x = JSON.stringify(window); console.log(x); (Я думаю, что это даст вам окно во время componentDidMount)

Но я предполагаю, что enablemouseflow - это то, что добавляется в window после создания страницы в каком-либо другом сценарии, поэтому он фактически недоступен для этого компонента. (но будет доступно при рендере).

...