我用ref =" canvas"创建了canvas元素。属性。
当我尝试将它们放入componentDidMount
时:
componentDidMount = () => {
console.log(this.refs);
}
有空的对象。
但是我做了
componentDidMount = () => {
console.log(this);
}
我看到React元素是非空的' refs'包含我的画布的对象!
这怎么可能发生?
答案 0 :(得分:2)
我认为问题在于您将componentDidMount
的值设置为要评估的函数,以便设置componentDidMount
的结果。当时,this.refs
未填充,因为该组件正在触发该预渲染功能。但是,通过仅记录this
,控制台最终将获取更新的组件,以便您可以在其中查看refs
。以下是构建组件的方法:
componentDidMount() {
console.log(this.refs)
}
这有意义吗?你正在做同样的事情...
class Foo {
bar = () => {
console.log('I get called when foo loads to determine the value of bar')
}
}
而不是
class Foo {
bar() {
console.log('I get called with bar()')
}
}
由于此语法无效,我无法真正测试我的代码,所以我不确定它是如何为您工作的......