2016-02-19 3 views
1

У меня есть isLeap в качестве пропеллера, который проверяет, является ли текущий год прыжком, а другой опорный currentMonth, который является текущим месяцем. (Например, 1 для февраля)React js: Почему я не могу создать закрытие?

Console бросает "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)} /> 
+0

'Нечаянная лексем this'? – Hacketo

+0

с 'leapcase' Я пытаюсь проверить, падает ли февраль под високосный год. Если так, верните 29 else return 28. –

ответ

1

Чтобы определить замыкание, что вам нужно обернуть функцию как этот

var leapCase = (function(props){ 

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

})(this.props) 
+0

Спасибо. Это было полезно! –

1

у вас есть синтаксические ошибки, вы не можете использовать . и thisin name of function argument,

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

leapCase(this.props.isLeap) 
+1

Спасибо за это !!! –

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)} /> 
+0

@Hacketo Упс, я забыл – Prasanth

Смежные вопросы