如何对待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的文档中找不到关于此的任何信息。 最佳答案
这取决于授权发生的位置。
如果确定授权的逻辑发生在子组件中-并且仅在子组件中-那么它将处于子组件状态。这意味着isAuthorized
,isVerified
不会是道具,它们会在您的子组件中显示。而bindToAuthorization
将由组件本身而不是其父项定义。
不过,更有可能的是,您希望将授权逻辑放在组件层次结构中的更高位置,或将其完全排除在逻辑之外(如果使用Flux)。
请记住,低阶组件通常不需要任何状态。父组件可以简单地在不同道具中重新渲染它们。这样就不必使用bindToAuthorization
了。父级不需要将授权逻辑委派给子级组件。当相关属性更改时,它只是重新渲染它。