Одна из вещей, которые я ценю больше всего в Backbone.js, - это то, как работает простое и элегантное наследование. Я начинаю разбираться с React и не могу найти ничего в реакции, похожее на этот код Backbone
var Vehicle = Backbone.View.extend({
methodA: function() { // ... }
methodB: function() { // ... }
methodC: function() { // ... }
});
var Airplane = Vehicle.extend({
methodC: function() {
// Overwrite methodC from super
}
});
В ответ мы имеем mixins, и используя те, которые мы могли бы приблизиться к приведенному выше примеру, если бы мы пошли следующим образом
var vehicleMethods = {
methodA: function() { // ... }
methodB: function() { // ... }
}
var Vehicle = React.createClass({
mixins: [vehicleMethods]
methodC: function() {
// Define method C for vehicle
}
});
var Airplane = React.createClass({
mixins: [vehicleMethods]
methodC: function() {
// Define method C again for airplane
}
});
Это менее повторяемо, чем определение одного и того же материала снова и снова, но оно, похоже, не так гибко, как метод Backbone. Например, я получаю сообщение об ошибке, если попытаюсь переопределить/перезаписать метод, который существует в одном из моих миксинов. Кроме того, способ React.js - это больше кода для меня.
В реагировании есть некоторые невероятно умные вещи, и мне кажется, что это больше похоже на то, что я не получаю, как правильно это делать, чем это чувствуется как функция, отсутствующая в React.
Приветствуются любые указатели.