扩展React.js组件

JavaScript React.js

飞羽宝儿

2020-03-18

关于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缺少的功能那样。

任何指针,不胜感激。

第2029篇《扩展React.js组件》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

0个回答

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android