访问函数在Javascript ES6(ES2015?ES16?)中的类中声明

时间:2016-04-05 02:17:07

标签: javascript function class ecmascript-6

我创建了一个小助手类:

import React from 'react';
import Format from '/imports/helpers/format.js';

export default class ListingCard extends React.Component {
  render() {
    return (
      <div className="card">        
        {Format.formatDate(this.props.listing.created_at)}</div>
      </div>
    )
  }
}

我试图在JSX模板中调用它:

municipalite

使用WebStorm,找到Format类。但方法不是。

  

ListingCard.jsx:22未捕获的TypeError:_format2.default.formatDate不是函数

知道为什么吗?

1 个答案:

答案 0 :(得分:3)

您需要使用static关键字来声明类方法

export default class Format {
  static formatDate(date) {
    return moment(date);
  }
}

原因是,如果您不使用static关键字,formatDate将是实例方法,这意味着该方法仅适用于类的实例

// e.g., how to use an instance method
var f = new Format();
f.formatDate(someDate);

@loganfsmyth发表了一篇好评;这是我在原来的答案中没有考虑过的事情。

如果您不打算将Format作为一个班级使用,那么宣布它是没有意义的。

// format.js
import moment from 'moment'
export function formatDate(date) { return moment(date); }

// otherfile.js
import {formatDate} from './format';