在反应组件中写一个类之外的函数

时间:2017-12-06 06:29:41

标签: javascript reactjs ecmascript-6 es6-class

我见过像这样的代码

function abc(){
  return 'abc'
}
class MyComponent extends React.Component {
    static abc = abc;
    render() { return <h1>{this.abc}</h1>; }
}

其中函数abc在react类之外定义。我不知道为什么作者这样做,为什么不能在课堂上做到这一点?

3 个答案:

答案 0 :(得分:4)

这些是ES6 static methods,并不是React独有的。它们是组件类的成员,而不是组件的实例。它们并没有在React中广泛使用,但它们可能很有用。它甚至在React docs中提到:

  

有时在React组件上定义静态方法很有用。   例如,Relay容器将静态方法getFragment公开给   促进GraphQL片段的组成。

它们可以用作Component的公共成员,由它的所有实例共享。为了给您一个想法,其他static members of a React classdisplayNamedefaultProps

另见Static methods in React。如您所见,使用静态方法的情况并不多。

答案 1 :(得分:0)

一方面,在类外声明函数更容易导出。在测试您的React应用程序时(即通过开玩笑),这很有用。

答案 2 :(得分:-1)

import React, { Component } from 'react';

class Contacts extends Component {

    render() {
        return (
            Contact()
        );
    }
}
const Contact = () => {
    return (
        <div>
            <p>Contactssssss</p>
        </div>
    );
};

export default Contacts;