我最欣赏 Backbone.js 的一件事是简单而优雅的继承是如何工作的。我开始掌握 React,但在 React 中找不到任何类似于此 Backbone 代码的内容
var Vehicle = Backbone.View.extend({
methodA: function() { // ... }
methodB: function() { // ... }
methodC: function() { // ... }
});
var Airplane = Vehicle.extend({
methodC: function() {
// Overwrite methodC from super
}
});
在React 中,我们有 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 方式那么灵活。例如,如果我尝试重新定义/覆盖存在于我的一个 mixin 中的方法,我会收到错误消息。最重要的是,React.js 方式是我编写的更多代码。
React 中有一些非常聪明的东西,感觉这更像是我不知道如何正确地做到这一点,而不是感觉像是 React 缺少的一个功能。
任何指针都非常感谢。