问题标签 [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.
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 引用。所以我们不能用它作为钥匙。
仅在普通功能的情况下是否可以这样做?也许我错过了其他一些有趣的变体。
感谢您的任何帮助和建议。亲切的问候。
list - 使用 foldr 函数计算负整数平方和的 Haskell 代码
我是haskell代码的新手。我尝试使用 foldr 高阶计算列表中负整数的平方和。
请帮助解释每一行代码,如果此代码有错误,请给出任何解决方案
javascript - 我如何从它的包装组件处理 HOC?
我有一个HOC
使用来处理加载axios
,
这是一个代码withAxiosHOC
:
通常我是HOC
这样使用的,比如说Home.js
:
但有时我需要根据包装组件的状态调用 URL,
像这样的东西Suggestion.js
:
如您所见Suggestion.js
,我需要根据lat
and调用 URL ,并且仅在long
of中可用,position state
lat long state
wrappedComponent
HOC
我的问题:
lat long
当WrappedComponent 中的状态可用时,如何处理 HOC 以运行?- 我的 HOC 也可以用
POST method
吗?
React Native
请在范围内给我一个建议/答案
reactjs - React - 碳设计系统 - 右侧边栏中的转换不起作用
我正在尝试将 Carbon Design System 用于一个项目,我需要一些有关 UI Shell 的帮助。
右侧边栏的过渡无法正常工作。
这是一个工作示例,看看它打开和关闭的流畅程度(见现场示例):
这是有问题的示例。没有过渡(参见现场示例):
我认为这与高阶组件的工作方式有关。这是我的理论:
HeaderPanel
正在渲染内部HeaderContainer
,这是一个高阶组件。
当状态变量switchCollapsed
发生变化时,HeaderContainer
会再次完全渲染。
所以这可以解释为什么没有过渡。
我是 React 新手,这个理论是基于我迄今为止的 React 知识。如果我错了请纠正我
这是第二个示例的一段代码(为了这篇文章的简洁而简化)。在此处查看完整代码
此外,如果我更改 React Dev Tools 上的属性,则转换工作!
reactjs - React Ionic,从通过路由组件定义的组件访问 App.tsx 方法
我想问如何从 Home.tsx 访问 App.tsx 中定义的方法“testMethod”
这是 App.tsx(此组件具有名称为“testMethod”的方法)
这是 Home.tsx
从 Home.tsx,当用户单击 Home.tsx 中的按钮时,我想执行 App.tsx 中定义的方法“testMethod”
我仍然不知道如何实现这一点,非常感谢您的帮助。
谢谢你。
typescript - 使用带有 FlatList 的打字稿的高阶组件问题
问题:
我需要使用可以推断类型的高阶组件FlatList
with typescript
。
我怎样才能做到没有错误?
解释:
我决定创建一个自定义注入到我的应用程序的Props
任何组件的组件。FlatList
我认为高阶组件最适合这种情况。
但是,并非如此:一切正常,除了typescript
. 当我尝试强输入 myFlatList
以推断其他道具方法(例如renderItem
)时,出现错误:
目前,我别无选择,只能any
用于渲染方法定义。
我还尝试模仿FlatList
-- 使用两个嵌套的泛型类型 (T
和ItemT
)的语法
但我还有另一个typescript
错误:
javascript - 高阶函数javascript
我在创建高阶函数来修剪空白时遇到问题
该函数永远不会被执行
reactjs - (0, _hoc.default) 不是函数。要求循环是允许的,但可能导致未初始化的值
这是我的错误去创建一个 HOC 使用函数组件而不是类 Component
我的代码:
有人有解决这个问题的想法吗?非常感谢!
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<...>'
.
知道如何正确设置道具类型吗?
基础组件:
特设:
初始化: