javascript - 具有自定义属性的 React.createClass

标签 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 的文档中找不到任何有关此内容的信息。

最佳答案

这取决于授权发生的地点。

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

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

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

关于javascript - 具有自定义属性的 React.createClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342303/

相关文章:

javascript - 如何发送数据正确的axios Error : Multipart: Boundary not found

javascript - 如何使用 CMake 将 C++ 项目与 NodeJS 集成

reactjs - React 我想在 react-chart-2 工具提示中添加文本

javascript - 是否可以在不使用 "new"关键字的情况下使用 Javascript 原型(prototype)?

javascript - jQuery 如何在嵌套列表中选择当前列表项然后隐藏所有其他列表项

javascript - 在 React Native 应用程序的每个页面上包含 TabBarIOS?

reactjs - 从数组渲染 Material-UI 图标

reactjs - 在 Laravel 中一起使用 React.js 和 Vue.js

reactjs - 如何在ubuntu上为 digital ocean 设置防火墙?

javascript - 调用具有多个数组参数的函数