嗨,我有这段代码
if (condition1 & condition2) {
something = this.props.something.filter(1)).then(this.props.something.filter(2)
} else if (condition1) {
something = this.props.something.filter(1)
} else if (condition2) {
something = this.props.something.filter(2)
}
页面初始加载时,我得到的结果为
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
}
在控制台的“窗口对象”中,“ enableMouseFlow”可用,但是当我尝试将其作为console.log(window.enableMouseFlow)时;令人安慰的是'undefined'
如果我在render()方法中对其进行控制台,则得到的结果为:
Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …} CompanyAccountsList.jsx?a48a:36
undefined
总而言之,我在componentDidMount()中找不到'window.enableMouseFlow'
答案 0 :(得分:1)
我认为console.log
正在传递对窗口的引用,因此可以在将其实际记录到控制台时解决。
你可以尝试
const x = JSON.stringify(window);
console.log(x);
(我认为这会在componentDidMount时为您提供窗口)
但是我猜想enablemouseflow是在其他脚本中创建页面后添加到window
的东西,因此该组件实际上不可用。 (但将在渲染时可用)。
答案 1 :(得分:0)
@Alan是的,实际上我正在componentDidMount中获得窗口,即使我在控制台窗口中也可以在控制台中获得enableMouseFlow。
console.log(window);
Output:
//window.enableMouseFlow is available
但是,如果我仅控制台window.enableMouseFlow,则会得到未定义的信息
console.log(window.enableMouseFlow);
Output:
//Undefined
////window.enableMouseFlow is not available
第二,是的,我在想,与您在其他脚本中创建页面后将enablemouseflow添加到窗口相同,但是我还有其他一些类似的reactJs页面,可以在其中获取console.log(window.enableMouseFlow) componentDidMount
仅供参考,在浏览器控制台中填充页面后,我可以获取console.log(window.enableMouseFlow);
实际上window.enablemouseflow实际上稍后会加载,请参见屏幕截图: console screenshot