反应:为什么静态propTypes

时间:2016-11-09 19:29:56

标签: reactjs redux react-proptypes

我正在寻找redux todomvc codesstatic中的static propTypes关键字是什么? 感谢

更新

不知道为什么会投票?这篇文章太简单了吗?欢迎评论。谢谢。我希望我可以删除这篇文章。

2 个答案:

答案 0 :(得分:32)

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;
}

作为旁注,在类似的类中定义属性的能力在任何浏览器中都不存在(还有):你需要一个像Babel这样的transform-class-properties插件的转换器。

答案 1 :(得分:11)

rule1: echo "bye" rule2: date rule3: @echo "hello" rule4: rule3 rule1 对于组件的实例不是唯一的。他们也不会改变每个组件。因此,他们成为班级的静态成员是有道理的。