如何处理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的文档中找不到任何相关内容。
答案 0 :(得分:2)
这取决于授权的位置。
如果用于确定授权的逻辑发生在子组件中 - 并且仅在子组件中 - 那么它将处于子组件状态。这意味着isAuthorized
,isVerified
不是道具,它们将在您的子组件中显示。 bindToAuthorization
将由组件本身定义,而不是其父组件。
更有可能的是,您希望授权逻辑位于组件层次结构中的更高点,或者完全位于其外部(如果使用Flux)。
请记住,低阶组件通常不需要任何状态。父组件可以简单地在不同的道具中重新渲染它们。这使您bindToAuthorization
不必要。父母不需要将授权逻辑委托给子组件;它只是在相关属性发生变化时重新呈现它。