如何在函数中用 this 指向 React 组件?

郑杰

我正在尝试创建一个集成了 D3.js 和 React 的填充量规。首先,请看一下我下面的代码:

componentDidMount() {
  renderOuterGauge();
  renderInnerGauge();
}

componentDidUpdate() {
  renderOuterGauge();
}

renderInnerGauge = () => {
  const innerGauge = this.svg.append('path')
    .attr('transform', 'translate(60,100)')
    .attr('stroke', 'transparent')
    .attr('d', 'M0,0 l440,-60 v100 h-440 v-40')
    .on('click', function(d) {
      const x = d3.mouse(this)[0];
      const yUP = x / (440 / -60);
      const score = x / 4.38;
      console.log(score);
      this.setState({
        score: score
      })
      d3.event.this.setAttribute('d', `M0,0 l${x},${yUP} v${yUP+40} h${-x} v-40`);
      d3.event.this.setAttribute('fill', 'forestgreen');
    })
}

如上所示,我正在尝试使用this.setState方法动态填充内部仪表,但由于方法调用在闭包中,我无法使用setStateon this

通常我可以使用箭头函数定义来解决这个问题,但是据我所知,为了在仪表中获取xy使用值d3.mouse(this),我不能使用箭头函数。对于这种情况,有没有办法指向this反应组件并在同一函数中使用鼠标方法?

亚当·纳撒尼尔·戴维斯

如您所知,当您深入研究某些 Javascript 函数时, 的含义this可能会改变。但是,该函数保持对其范围内的变量的访问。因此,您可以创建一个临时变量来保存 的值,this然后从您的函数内部引用它,如下所示:

renderInnerGauge = () => {
    const self = this;
    const innerGuage = this.svg.doAllTheThings('foo').on('click', function(d) {
        console.log('self', self); // this is the value of the "outer" this 
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在React中用其他组件内容替换当前组件内容

来自分类Dev

如何在Angular 8中创建和指向嵌套组件

来自分类Dev

如何在React-Router中用历史记录替换链接组件行为

来自分类Dev

如何在React组件构造函数中设置setInterval?

来自分类Dev

如何在React函数组件中使用数组状态?

来自分类Dev

如何在React函数组件中调用API?

来自分类Dev

如何在 React Native 中使用函数渲染组件

来自分类Dev

如何在 React 中触发多个组件的函数?

来自分类Dev

如何扩展React组件?

来自分类Dev

如何在React Native功能组件中从父组件调用子函数?

来自分类Dev

如何从父组件调用React / Typescript子组件函数?

来自分类Dev

如何从组件容器设置 React 组件的样式?

来自分类Dev

如何从React组件中调用Firebase函数

来自分类Dev

无法在我的React项目中获取指向我组件的.env网址

来自分类Dev

React.js如何在组件内部渲染组件?

来自分类Dev

如何在React组件中使用样式化组件

来自分类Dev

如何在React中从父组件调用子组件的方法

来自分类Dev

如何在React Native中让组件控制同级组件?

来自分类Dev

组件函数多次运行 react

来自分类Dev

如何在React组件中访问JSON?

来自分类Dev

如何在React中使组件闪烁

来自分类Dev

如何在WebWorker上使用React组件

来自分类Dev

如何在React中测试类组件

来自分类Dev

如何在React中导入Bootstrap组件?

来自分类Dev

如何在react中呈现默认组件

来自分类Dev

如何在React中引用组件的props?

来自分类Dev

如何在React Modal上显示组件

来自分类Dev

如何在React中渲染递归组件?

来自分类Dev

如何在 React 中删除异步组件?

Related 相关文章

热门标签

归档