React.createClass具有自定义属性

时间:2015-12-17 19:03:03

标签: javascript reactjs

如何处理React.createClass()中的自定义JavaScript属性?

以下是示例:

var RouterView = React.createClass({
  mixins: [Morearty.Mixin],
  isAuthorized: false,      // should it be part of state ??
  isVerified: false,        // should it be part of state ??
  bindToAuthorization: function() {
    if(/* blah-blah-blah */) {
      this.isAuthorized = true; 
    }
  },
  render: ...
});

似乎.isAuthorized.isVerified在语义上应该像组件的状态一样,但它只是.createClass()规范的属性。

.isAuthorized.isVerified的行为方式?它的行为是static吗?在React的文档中找不到任何相关内容。

1 个答案:

答案 0 :(得分:2)

这取决于授权的位置。

如果用于确定授权的逻辑发生在子组件中 - 并且仅在子组件中 - 那么它将处于子组件状态。这意味着isAuthorizedisVerified不是道具,它们将在您的子组件中显示。 bindToAuthorization将由组件本身定义,而不是其父组件。

更有可能的是,您希望授权逻辑位于组件层次结构中的更高点,或者完全位于其外部(如果使用Flux)。

请记住,低阶组件通常不需要任何状态。父组件可以简单地在不同的道具中重新渲染它们。这使您bindToAuthorization不必要。父母不需要将授权逻辑委托给子组件;它只是在相关属性发生变化时重新呈现它。