javascript - HOC 组件 - 数组返回 true 或 false

标签 javascript reactjs

我现在有一个心理障碍,我有一个 HOC 组件正在检查如下所示的功能标志:

const withEnabledFeatures = (WrappedComponent: any) => {
      class WithEnabledFeatures extends React.Component<any> {
        enabledFeatures = (): Array<string> => {
          if (window === undefined) return [];
          return window.AH.featureFlags;
        }

        isFeatureEnabled = (feature: string): boolean => {
          return this.enabledFeatures.includes(feature);
        }

        render() {
          return (
            <WrappedComponent
              enabledFeatures={this.enabledFeatures()}
              isFeatureEnabled={this.isFeatureEnabled}
              {...this.props}
            />
          )
        }
      }
  };

export default withEnabledFeatures;

我将在另一个组件中使用它作为 Prop

isFeatureEnabled('feature_a');

如果存在则返回 true,如果不存在则返回 false。

我的问题是我的 isFeatureEnabled 函数正确吗?

最佳答案

不,您没有将 this.enabledFeatures 作为方法调用,您正在尝试访问其中的成员。使用 this.enabledFeatures()。 此外,HOC 工厂方法不会返回扩展类。

const withEnabledFeatures = (WrappedComponent: any) => {
      return class WithEnabledFeatures extends React.Component<any> {
        enabledFeatures = (): Array<string> => 
            (window === void 0) ? [] : window.AH.featureFlags;

        isFeatureEnabled = (feature: string): boolean => 
            this.enabledFeatures().includes(feature); // <-- Here, ()

        render() {
          return (
            <WrappedComponent
              enabledFeatures={this.enabledFeatures()}
              isFeatureEnabled={this.isFeatureEnabled}
              {...this.props}
            />
          )
        }
      }
  };

export default withEnabledFeatures;

(我还选择压缩了您的代码并添加了最佳实践,void 0)

关于javascript - HOC 组件 - 数组返回 true 或 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56545537/

相关文章:

javascript - 带有移动平均线的 HTML5/JS 图表

javascript - 使用数组中的数据动态创建选择框

javascript - React JS - 路由 - 元素类型无效

javascript - 显示 JSON

javascript - 更新 JavaScript 对象创建模式

reactjs - 重置/初始化 InfiniteLoader 的正确方法是什么

reactjs - Jest/React 测试库 : Is it Possible to Spy on and Wait GraphQL Queries as with Cypress?

javascript - 我可以在 Svelte 中使用 React 组件吗?

javascript - 展开时的 Angular Dropdown 显示在屏幕底部

javascript - 拖动 div 时的 onMouseOver 事件