react:为什么是静态 propTypes

IT技术 reactjs redux react-proptypes
2021-04-29 08:01:04

我正在寻找redux todomvc 代码什么是static在关键字static propTypes谢谢

更新

不知道为什么投反对票?这个帖子是不是太简单了?欢迎提出意见。谢谢。我希望我可以删除这个帖子。

2个回答

static不是上一代 Javascript(“ES5”)的一部分,这就是为什么您不会在旧文档中找到它的原因。但是,除 Internet Explorer ( http://caniuse.com/#search=es6 )之外的所有主要浏览器现在都支持“ES6”类语法的其余部分,如果您使用像 Babel 这样的转译,则可以使用它在任何浏览器中。大多数 React 用户已经在使用 Babel 来转译他们的 JSX,所以 React 站点(如 Redux TodoMVC)认为这是理所当然的。你可以static在这里阅读更多关于https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static 的信息

在 的情况下static propTypes,propTypes 需要在类本身上声明,而不是在类的实例上。换句话说,如果您使用无状态组件:

function Foo() { 
    this.PropTypes = somePropTypes; // bad
    return <div></div>;
}
Foo.PropTypes = somePropTypes; // good

使用 ES6 类时,相当于Foo.PropTypes = somePropTypes

class Foo extends React.Component {
    static PropTypes = somePropTypes;
}

作为旁注,在任何浏览器中都不存在在类中定义属性的能力(目前):您需要一个带有transform-class-properties插件的转译器,例如 Babel

propTypes不是组件实例所独有的。它们也不会因组件而改变。因此,让它们成为类的静态成员是有意义的。