我试图使用React提供的ref
属性来引用DOM元素:
class A extends React.Component {
popup;
render() {
return(
<div>{this.renderTemplate()}</div>
)
}
renderTemplate = () => {
if(someCondition) {
return(
<span ref={(pop) => {this.popup = pop}}></span>
)
}
}
}
当应用运行时, this.popup
在上面的代码中未定义。在Chrome开发工具中进行调试时,我看到了
“ReferenceError: pop未在eval中定义(eval at render fileName.js:lineNo:columnNo)”。
为什么会这样?
答案 0 :(得分:0)
您可能需要将popup
绑定到组件中的this
以及在returnTemplate
renderTemplate = () => {
if(someCondition) {
return <span ref={(pop) => {this.popup = pop}}></span>
}
}
答案 1 :(得分:0)
您是否尝试将renderTemplate
编写为类的方法而不是分配给属性的函数?
renderTemplate(){
if(someCondition) {
return(
<span ref={(pop) => {this.popup = pop}}></span>
)
}
}
您可以参考this
。