React js:为什么我无法创建闭包?

时间:2016-02-19 10:01:27

标签: javascript reactjs closures

我有isLeap作为支柱,检查当前年份是否为飞跃,另一个支柱currentMonth是当前月份的支数。 (例如1月2日)

当我尝试在函数或闭包中创建函数时,控制台抛出"Unexpected token"错误

  70 |  },
  71 |  daysInMonth : function(d){
> 72 |      var leapCase = function(this.props.isLeap){
     |                           ^
  73 |      }
  74 |  },
  75 |  render : function(){

在渲染功能中,我通过我的组件属性调用上面的函数:

<Week key={i} dayCount = {this.daysInMonth(this.props.currentMonth)} />

3 个答案:

答案 0 :(得分:3)

您尝试使用参数this启动一个函数,该函数用于确定函数的调用方式。如果你想在闭包中访问this.props,试试这个。

  70 |  },
  71 |  daysInMonth : function(){
            var props = this.props
  72 |      var leapCase = function(){
     |         console.log(props.isLeap)
  73 |      }
  74 |  },
  75 |  render : function(){

在渲染功能中,将其称为

<Week key={i} dayCount = {this.daysInMonth.bind(this)} />

答案 1 :(得分:1)

您有语法错误,无法使用.this in name of function argument

var leapCase = function(isLeap) {
  // ... 
};

leapCase(this.props.isLeap)

答案 2 :(得分:1)

要定义一个闭包,你需要像这样包装函数

var leapCase = (function(props){

    return function(){
        if (props.isLeap){
            ...
        }
    };    

})(this.props)