【问题标题】:React Native Extending Multiple Components vs createClassReact Native 扩展多个组件与 createClass
【发布时间】:2016-10-07 23:28:03
【问题描述】:

我看过很多教程,其中的代码建议执行以下操作:

var App = React.createClass({
    someFunction() { .. },
    render() { return(); },
});
var Lication = React.createClass({
    someOtherFunction() { .. },
    render() { return(); },
});

...但我一直在使用 ES6 语法:

class App extends Component {
    someFunction() { .. }
    render { return(); }
}

在哪里创建Lication 类?在 App 类的正下方?或者它是否需要自己的文件,并使用以下内容导入主文件:

var Lication = require('./Lication');

我还没有看到使用多个类的代码。

【问题讨论】:

    标签: javascript reactjs react-native ecmascript-6


    【解决方案1】:

    在哪里创建 Lication 类?在 App 类的正下方?还是需要自己的文件?

    使用 ES6 类或 React 的 createClass 函数对必须在哪里定义它们没有任何规定。两者都可以定义在另一个之上或在不同的文件中。 使用 ES6 类确实会影响代码顺序的一种方法是使用 hoisting

    函数声明和类声明之间的一个重要区别是函数声明是提升的,而类声明不是。您首先需要声明您的类,然后访问它。

    这意味着这样的事情是无效的:

    var l = new Lication(); // ReferenceError
    
    class Lication {}
    

    至于是否将代码拆分为文件,这是有效的:

    class App extends React.Component {
      // ...
    }
    
    class Lication extends React.Component {
      // ...
    }
    

    这是这样的:

    class App extends React.Component {
      // ...
    }
    
    var Lication = require('path-to-lication-class');
    

    Lication 将在其自己的文件中定义并导出:

    class Lication extends React.Component {
      // ...
    }
    
    module.exports = Lication;
    

    最后一个例子本质上等价于:

    class App extends React.Component {
      // ...
    }
    
    var Lication = class Lication extends React.Component {
      // ...
    }
    

    拆分成文件是为了在您的代码中实现模块化,其中各个组件被拆分成文件(或模块),因此它们更易于维护,并且整个应用程序在开发时不会挤在一个巨大的文件中,但以后会合并部署时。

    这是useful read on classes

    【讨论】:

    • 你是个了不起的人。参考文献也很棒。你超越了为我提供了我正在寻找的答案。谢谢!
    • 别担心,朋友,很高兴为您提供帮助:)
    猜你喜欢
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2020-11-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多