如何在React类中编写函数?

时间:2016-08-09 16:14:09

标签: javascript ruby-on-rails reactjs ecmascript-6

我正在尝试调整a SO answer中的代码,函数和变量写如下:

const getIntervals = n=> availability=> {
}

let availability = [
]

那些通常可以在反应类中使用(见下文)还是需要重写?

class Calendar extends React.Component {}

询问的原因是我使用了React实现for Rails并且确实收到包含该函数和变量命名模式的错误。

2 个答案:

答案 0 :(得分:4)

纯函数,不修改传递的值,总是可以在任何地方使用。

直接在React类中使用它们也很好,但是你在应用程序和类中使用很多的常用函数,如字符串修改,数组排序算法,应该在一个单独的模块中,如

// my-helpers.js

export const countKeysInObject = (data) => {
  if (typeof data !== "object" || Array.isArray(data)) return 0;

  Object.keys(data).length;
}

其他一些文件..

import { countKeysInObject } form 'my-helpers'
// And you can use it everywhere..

答案 1 :(得分:2)

如果您使用class并扩展Component,则可以使用简单方法处理大多数事情:

class Calendar extends React.Component {
  constructor(props) {
    this.date = props.date;
  }

  render() {
    return <span>{this.date.toString()}</span>;
  }
}

Calendar.propTypes = {
  date: React.PropTypes.date.isRequired
};

如果使用对象文字,则不能使用propTypes的方法或任何可能是初始字段的方法。声明类(propTypes)或构造函数(初始state)之后需要附加的那些。