javascript - ref 不是使用 react 中的箭头函数定义的吗?

标签 javascript reactjs

当用户单击元素外部时,我尝试制作可切换内容,但出现了 this.node 未定义错误?

handleOutsideClick(e) {
    // ignore clicks on the component itself
    if (this.node.contains(e.target)) {
      return;
    }

    this.handleClick();
  }


  render() {
    return (
      <div ref={node => { this.node = node; }}>
        <button onClick={this.handleClick}>Button handler</button>
        {this.state.visibleContent && <div>Toggle content</div>}
      </div>
    );
  }

代码https://codesandbox.io/s/v38q4zrq7

在渲染方法中我使用了 ref={node => { this.node = node; }} 为什么它仍然是未定义的?这是一个使用完全相同技术的工作示例 https://codepen.io/graubnla/pen/EgdgZm

最佳答案

您的函数handleOutsideClick超出了范围。如果你使用babel,可以直接将其变成箭头函数

handleOutsideClick = (e) => {
    // ignore clicks on the component itself
    if (this.node.contains(e.target)) {
      return;
    }

    this.handleClick();
  }

或者如果这不是一个选项,请将其绑定(bind)到构造函数中

constructor() {
  super()
  this.handleClick = this.handleClick.bind(this)
}

关于javascript - ref 不是使用 react 中的箭头函数定义的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49527412/

相关文章:

javascript - 获取 DatePicker 值 VueJS 的问题

javascript - React Javascript 显示/解码 unicode 字符

reactjs - 如何在React/Flux中实现导航 Controller /标签栏 Controller ?

reactjs - JavaScript 和 JSX 有什么区别?

javascript - 通过降低高度来验证单独的文本字段样式不起作用

javascript - 不使用参数检索上传文件的值

javascript - 如何使 qtip2 工具提示动态化

javascript - 如何使用 next-auth 获取额外的范围数据?

javascript - webpack动态加载外部模块失败

javascript - 滚动条呈现在绝对定位元素上方,以便水平滚动元素下方的容器