将一个静态函数调用到React ES6类中

Ajo*_*uve 39 javascript ecmascript-6 reactjs

我有以下ReactJS类:

import React from 'react'

export class Content extends React.Component {

  static getValue(key) {
    return key
  }

  render() {
    let value = this.getValue(this.props.valueKey);
    return <span dangerouslySetInnerHTML={{__html: value}} />
  }
}
Run Code Online (Sandbox Code Playgroud)

但是我有以下错误:

TypeError: this.getValue is not a function
Run Code Online (Sandbox Code Playgroud)

我不明白.这是调用静态函数的好方法吗?我认为反应是用静电做的,但我不知道是什么.

Cym*_*men 48

需要在类而不是实例上访问静态方法.所以在你的情况下,使用:

Content.getValue()

但是,静态方法将无法访问this- 我认为您不希望该方法基于上面的代码示例是静态的.

更多:ES6中的静态成员

  • 'getValue' 函数本身是静态的 - 所以它可以用 this.constructor.getValue(params) 调用......我经常在我的代码中使用这个方法。我看不出这个函数不是静态的原因,除非需要在函数内部调用“this”。 (3认同)

Geo*_*lah 15

您可以从班级内访问this.constructor.getValue.

编辑:我在这里添加了一个JSFiddle .我做的唯一改变是从构造函数添加函数调用并删除危险的setHTML - 如图所示,您可以从this.constructor访问getValue静态,并且工作得很好.

  • 不正确 - 你可以.相信我这个.我将添加一个JSBin (3认同)
  • @OliverDixon,因为“ this.contrstructor”指向构造函数本身。因此它等于`Content.getValue`但不需要硬编码类名 (2认同)