首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >this.refs.something返回“未定义”

this.refs.something返回“未定义”
EN

Stack Overflow用户
提问于 2016-02-06 01:26:33
回答 5查看 91.3K关注 0票数 51

我有一个定义了ref的元素,并最终呈现到页面中:

代码语言:javascript
复制
    <div ref="russian" ...>
       ...
    </div>

我想访问像offset...之类的DOM元素属性。然而,我一直在使用undefined,我一点也不知道为什么。经过一些搜索,很明显refs只适用于一个文件,但除了这一个页面之外,我不会在任何地方使用它。我这样说是为了记录下来:

console.log('REFS', this.refs.russian);

这可能是什么原因造成的?

EN

回答 5

Stack Overflow用户

发布于 2016-02-06 01:45:29

在挂载子组件之前,请检查您是否正在访问ref。例如,它在componentWillMount中不起作用。在挂载元素后自动调用ref相关回调的另一种模式是-

代码语言:javascript
复制
<div ref={(elem)=>(console.log(elem))}/>

您也可以使用此表示法在深度嵌套中获取挂载的元素-

代码语言:javascript
复制
<div ref={this.props.onMounted}/>
票数 43
EN

Stack Overflow用户

发布于 2018-09-02 19:10:29

自React版本16.4以来的更新

在构造函数方法中,像这样定义ref

代码语言:javascript
复制
constructor(props) {
  super(props);
  this.russian = React.createRef();
}

在使用ref的渲染器中,执行此操作。

代码语言:javascript
复制
<input
  name="russian"
  ref={this.russian} // Proper way to assign ref in react ver 16.4
/>  

例如,如果您想在组件挂载时获得焦点

代码语言:javascript
复制
componentDidMount() {
  console.log(this.russian); 
  this.russian.current.focus();
 }

参考Refs Documentation React

票数 9
EN

Stack Overflow用户

发布于 2020-01-10 17:45:05

你应该把你的Console.log放在函数example(){...}里面,而不是把它放在里面:

代码语言:javascript
复制
example=()=>{....}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35230020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档