问题标签 [high-order-component]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
47 浏览

javascript - React HOC 中每个函数调用的唯一存储

我想创建一个生成一些数据并将其保存在某个变量中的助手,并且在下次执行时,它应该使用记忆值进行计算。

基本上它是高阶包装器的帮手。这意味着应该为每个 HOC 创建存储,但不应该在下一次重新渲染时重新创建。

现在它看起来像:
伪代码

这个助手的功能流程可以分为两个步骤。
1) 第一次 HOC 调用。它根据主题创建样式并将它们保存在存储中
2) HOC 的 Next Re-render。它应该获取先前创建的样式并返回记忆值。这个值对于每个 HOC 应该是唯一的。

问题是相同的帮助器也可以用于其他组件,这意味着我们不能使用相同的存储,因为它将被覆盖,而是“最新”的 HOC。

如何解决它的可能方法:
1)创建一个包含存储本身的类,并为每个 HOC 创建一个新实例。老实说,我想避免它,因为在这种情况下它看起来对我来说太复杂了。

2)创建一些共享注册表并为每个 HOC 传递 UUID。这很好,但我不知道如何自动做到这一点。我不想在每个 HOC 上手动传递 UUID。我想在后台拥有这个功能,以保持 HOC 调用的轻量级。

我在考虑new Map, 并将创建的样式保存为键值对,但它根本不起作用,因为我们在 HOC 中没有生成的 KEY 引用。所以我们不能用它作为钥匙。

仅在普通功能的情况下是否可以这样做?也许我错过了其他一些有趣的变体。

感谢您的任何帮助和建议。亲切的问候。

0 投票
1 回答
230 浏览

list - 使用 foldr 函数计算负整数平方和的 Haskell 代码

我是haskell代码的新手。我尝试使用 foldr 高阶计算列表中负整数的平方和。

请帮助解释每一行代码,如果此代码有错误,请给出任何解决方案

0 投票
2 回答
199 浏览

javascript - useEffect 没有在 Hoc 内部触发

如果我的组件没有 HOC,它确实会触发,但现在我将组件包裹在 withSpinner Hoc 内部,但它不会触发获取开始。

这是状态的控制台。

在此处输入图像描述

这是 withSpinner Hoc:

正如您从图像中看到的那样,我只看到微调器正在旋转,因为 fetchCollectionStart 没有触发,所以 redux 存储没有更新。

0 投票
1 回答
29 浏览

javascript - 我如何从它的包装组件处理 HOC?

我有一个HOC使用来处理加载axios

这是一个代码withAxiosHOC

通常我是HOC这样使用的,比如说Home.js

但有时我需要根据包装组件的状态调用 URL,

像这样的东西Suggestion.js

如您所见Suggestion.js,我需要根据latand调用 URL ,并且仅在longof中可用,position statelat long statewrappedComponentHOC

我的问题:

  1. lat long当WrappedComponent 中的状态可用时,如何处理 HOC 以运行?
  2. 我的 HOC 也可以用POST method吗?

React Native请在范围内给我一个建议/答案

0 投票
0 回答
538 浏览

reactjs - React - 碳设计系统 - 右侧边栏中的转换不起作用

我正在尝试将 Carbon Design System 用于一个项目,我需要一些有关 UI Shell 的帮助。

右侧边栏的过渡无法正常工作。

这是一个工作示例,看看它打开和关闭的流畅程度(见现场示例):

工作示例

这是有问题的示例。没有过渡(参见现场示例):

有问题的例子

我认为这与高阶组件的工作方式有关。这是我的理论:

HeaderPanel正在渲染内部HeaderContainer,这是一个高阶组件。
当状态变量switchCollapsed发生变化时,HeaderContainer会再次完全渲染。
所以这可以解释为什么没有过渡。
我是 React 新手,这个理论是基于我迄今为止的 React 知识。如果我错了请纠正我

这是第二个示例的一段代码(为了这篇文章的简洁而简化)。在此处查看完整代码

此外,如果我更改 React Dev Tools 上的属性,则转换工作!

在此处输入图像描述

0 投票
1 回答
112 浏览

reactjs - React Ionic,从通过路由组件定义的组件访问 App.tsx 方法

我想问如何从 Home.tsx 访问 App.tsx 中定义的方法“testMethod”

这是 App.tsx(此组件具有名称为“testMethod”的方法)

这是 Home.tsx

从 Home.tsx,当用户单击 Home.tsx 中的按钮时,我想执行 App.tsx 中定义的方法“testMethod”

我仍然不知道如何实现这一点,非常感谢您的帮助。

谢谢你。

0 投票
0 回答
420 浏览

typescript - 使用带有 FlatList 的打字稿的高阶组件问题

问题:

我需要使用可以推断类型的高阶组件FlatListwith typescript

我怎样才能做到没有错误?

解释:

我决定创建一个自定义注入到我的应用程序的Props任何组件的组件。FlatList

我认为高阶组件最适合这种情况。

但是,并非如此:一切正常,除了typescript. 当我尝试强输入 myFlatList以推断其他道具方法(例如renderItem)时,出现错误:

目前,我别无选择,只能any用于渲染方法定义。

我还尝试模仿FlatList-- 使用两个嵌套的泛型类型 (TItemT)的语法

但我还有另一个typescript错误:

0 投票
0 回答
51 浏览

javascript - 高阶函数javascript

我在创建高阶函数来修剪空白时遇到问题

该函数永远不会被执行

0 投票
1 回答
75 浏览

reactjs - (0, _hoc.default) 不是函数。要求循环是允许的,但可能导致未初始化的值

这是我的错误去创建一个 HOC 使用函数组件而不是类 Component

我的代码:

有人有解决这个问题的想法吗?非常感谢!

0 投票
1 回答
58 浏览

reactjs - 如何使用 Typescript 正确输入 react HOC

我是 Typescript 的新手,我不知道如何用它正确输入 HOC。我已经花了一整天的时间来弄清楚它没有任何成功。我有一个非常基本的代码片段BaseComponent和一个简单的HOC. 出于某种原因,在创建 BaseComponent 时,我收到 Typescript 错误:

Type '{ total: number; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<{}, ComponentState>> & Readonly<{ children?: ReactNode; }> & Readonly<...>'. Property 'total' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<{}, ComponentState>> & Readonly<{ children?: ReactNode; }> & Readonly<...>'.

知道如何正确设置道具类型吗?

基础组件:

特设:

初始化: