【问题标题】:react: why static propTypes反应:为什么是静态 propTypes
【发布时间】:2016-11-09 19:29:56
【问题描述】:

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

更新

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

【问题讨论】:

  • “我希望我可以删除这篇文章。”你不需要。三个反对票对你的得分的影响可以忽略不计,仅仅因为三个人不喜欢你的问题并不意味着其他人不会觉得这个问题有用。任何使用 SO 一段时间的人都会有至少一个他们有点不好意思问的问题(包括我自己),但这个地方的全部意义在于帮助人们学习,即使是“糟糕”的问题也可以做到这一点。
  • @machineghost 谢谢。事实上,我阅读了一些 javascript 文档。我没有找到static 属性。也许我没有仔细阅读文件。当然,static 经常使用其他语言。

标签: reactjs redux react-proptypes


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这在运行时方面是如何工作的?就像在创建实例期间不会检查 propTypes 一样吗?
    猜你喜欢
    • 2017-06-26
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多