将React mixin导出为单独的文件

时间:2014-08-25 13:36:03

标签: javascript reactjs mixins reactjs-flux

我试图将SetIntervalMixin分成另一个组件类文件的文件。也许我不完全理解module.export是如何工作的但是......如果我喜欢这样:

module.exports = {
 componentWillMount: function() {
   this.intervals = [];
 },
 setInterval: function() {
   this.intervals.push(setInterval.apply(null, arguments));
 },
 componentWillUnmount: function() {
   this.intervals.map(clearInterval);
 }
};

在SetIntervalMixin.js中,然后使用组件正常工作:

var SetIntervalMixin = require('../util/mixins/SetIntervalMixin')

但如果我这样写:

var SetIntervalMixin = {

  componentWillMount: function() {
    this.intervals = [];
  },
  setInterval: function() {
    this.intervals.push(setInterval.apply(null, arguments));
  },
  componentWillUnmount: function() {
    this.intervals.map(clearInterval);
  }
};

module.export = SetIntervalMixin;

它不起作用(尝试调用setInterval()时未定义)。我认为之后缺少一些东西:

SetIntervalMixin = ...

与定义组件时类似,使用:

var yourComponent = React.createClass(...

是否有类似于React.createMixin(......?或者最好的方法)。

感谢。

1 个答案:

答案 0 :(得分:4)

您的代码是正确的,您在第二个版本中只有一个拼写错误(应该是module.exports而不是module.export):

var SetIntervalMixin = {

  componentWillMount: function() {
    this.intervals = [];
  },
  setInterval: function() {
    this.intervals.push(setInterval.apply(null, arguments));
  },
  componentWillUnmount: function() {
    this.intervals.map(clearInterval);
  }
};

module.exports = SetIntervalMixin;