无法达到反应成分的参考

时间:2016-05-18 15:30:17

标签: reactjs

我用ref =" canvas"创建了canvas元素。属性。 当我尝试将它们放入componentDidMount时:

componentDidMount = () => {
  console.log(this.refs);
}

有空的对象。

但是我做了

componentDidMount = () => {
  console.log(this);
}

我看到React元素是非空的' refs'包含我的画布的对象!

这怎么可能发生?

1 个答案:

答案 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()')
  }
}

由于此语法无效,我无法真正测试我的代码,所以我不确定它是如何为您工作的......