Хорошо сказано. Я потратил некоторое время, пытаясь найти ответы на этот вопрос самостоятельно, и не смог найти ничего более существенного, чем потому что это удобно или, в случае принятия React, потому что это предпочтительнее. Но ничего толком не дало объективного ответа на вопрос почему так лучше?; а может в этом и дело. Аргументы в пользу синтаксиса класса, вероятно, могут быть не более чем субъективными, и я чувствую, что именно это лежит в основе презрения к принятию классов JS. Примерно так же участники считали rebeccapurple красивой данью уважения, в то время как другие считали это систематическим нарушением, пример которого откроет шлюзы для подобных предложений.

Если предположить, что по мере того, как синтаксис классов ES2015 набирал популярность, те, кто принимал такие решения о дорожной карте для React, также видели в этом возможность сосредоточиться на разработке основной библиотеки — помимо того, чтобы оставаться в курсе новых языковых функций. Это означало отказ от конструкций, которые набрали достаточное количество оборотов, чтобы стать языковыми функциями, и их извлечение в изолированное унаследованное направление разработки, где они, вероятно, будут поддерживаться не более, чем если бы они оставались в ядре. Тем не менее, многие из источников, с которыми я столкнулся, упоминали об использовании синтаксиса класса, как если бы это был единственный путь обновления. Кажется, почти не упоминается, что, как и PropTypes, createClass просто перемещен (https://www.npmjs.com/package/create-react-class) для дальнейшего использования.

Было бы неплохо иметь поля классов с этим ходом, но лично я не думаю, что это имело бы достаточно веса, чтобы отсрочить то, что было важной частью дорожной карты React. У меня тоже очень сильное мнение о раскрытии самодокументируемых частей, таких как propTypes, defaultProps и состояние в верхней части компонента класса, и отсутствие подъема класса может сделать это немного неудобным. Я даже делал такие глупости, как сохранял их в константе, а затем присваивал после определения компонента.

const PROPTYPES = {
  prop: PropTypes.string,
};
class Component extends React.Component {};
Component.propTypes = PROPTYPES;

Но я доволен транспилированием полей класса, чтобы получить тот же эффект. На самом деле, я лично использую наброски (разумеется, с хорошим планом побега); не потому, что я чувствую, что мое скромное использование будет непосредственно формировать язык и его функции, а потому, что это еще одна причина поддерживать связь с сообществом, которое самостоятельно формирует язык.