关于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中,我们有mixin,使用它们,我们可以像上面的例子那样有点接近
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中有一些非常聪明的东西,感觉更多的是我没有正确地做到这一点,而不是像React缺少的功能那样。
任何指针,不胜感激。