Как в точности выглядит параметр createClass в React? Это объект?

#javascript #reactjs

#javascript #reactjs

Вопрос:

Мне кажется, что я видел обе версии creatClass в React, причем первая более очевидна в документах. Есть ли какие-либо различия между двумя, кроме стилистических? Просто кажется странным, что первый стиль выглядит так, как будто он принимает объект, тогда как второй — это просто область видимости с любыми функциями, которые вы хотите в нее запустить.

 var Greeting = React.createClass({
  someFunction: function () {
    ...
  },

  getDefaultProps: function() {
    return {
      name: 'Mary'
    };
  },

  // ...

});
  

против.

 var Greeting = React.createClass({
  someFunction () {
    ...
  }

  getDefaultProps () {
    return {
      name: 'Mary'
    };
  }

  // ...

});
  

Комментарии:

1. Последний — ECMAScript6

2. Чтобы расширить то, что сказал Айзек, второй вариант — это просто объектный литерал с сокращенными определениями методов ES6.

3. в документе object literal используются запятые, но я не вижу, чтобы запятые использовались в другой работе, это необязательно?

4. Ваш второй пример завершился бы неудачей без запятых. То, о чем вы думаете, это использование class Greeting extends React.Component { method1() {} method2() {} }

5. Можете ли вы показать, где вы это видели? Во втором примере между функциями нужны запятые

Ответ №1:

Это не с react . Это функция ES6, называемая объектными литералами

 const a = 10;

const b = {
  a, //which is equal to a: a 
}

function a(){}

const c = {
  a, //which is equal to a: function a(){}
}