我指的是这个创建React高阶组件的例子,摘自本文。
我正在努力完全理解
interface PopupOnHoverPropType {
hoverDisplay: string;
}
const WithPopupOnHover = <P extends object>(BaseComponent: React.FC<P>): React.FC<P & PopupOnHoverPropType> => ({ hoverDisplay, ...props }: PopupOnHoverPropType) => {
const [displayMsg, setDisplayMsg] = useState<boolean>(false);
const toggleDisplayMsg = () => {
setDisplayMsg(displayMsg);
};
return (
<div onMouseEnter={() => setDisplayMsg(true)}>
<div className={`${hoverDisplay} popup`} onClick={toggleDisplayMsg}/>
<BaseComponent {...props as P} />
</div>
)
};
下面是我对上述代码的理解:
我们通过名称和popuponhover
定义了一个HOC,它接受一个React组件(BaseComponent)。BaseComponent附带了它的props(称为P),它返回一个新的React组件,该组件接受props P
如何使用此HOC?以下尝试给出了一个打字脚本错误,即传递了太多参数:
const enhanced = WithPopupOnHover(Modal);
const m = Enhanced(a,b,c, "up");
Modal React组件具有以下道具结构:
const Modal: React.FC<{
a: string;
b(): void;
c(locationData: customType): void;
}> = { ... }
看起来你刚刚忘记了对象括号。React组件都采用单个props对象参数。
const Enhanced = WithPopupOnHover(Modal);
const m = Enhanced({ a, b, c });
我正在构建一个网页,实现了每个组件共享的通用样式(相同的背景、边框和标题样式)。所以我想我应该制作一个HOC,它接受每个组件的内部内容以及一个标题,并返回一个外部组件,它封装了这个内部组件和标题。起初,我在尝试让它发挥作用时遇到了很多问题,因为我是一个新的反应者,但现在它终于起作用了,但我仍然不明白怎么做。 这是我的HOC 这是WrappedComponent: 这是ListsComponent
制表符组件
我在索引中创建了新的PublicClientApplication。tsx。现在我想把这个传递给我的withAuthHOC。该应用程序正在使用此HOC。tsx。所以我想在HOC中使用PublicClientApplication(pca道具)。我怎么做? 我的AppProps。tsx: 我的索引。tsx: 我的App.tsx: 我的名字是withAuthHOC。tsx:
本文向大家介绍使用高阶组件(HOC)实现一个loading组件相关面试题,主要包含被问及使用高阶组件(HOC)实现一个loading组件时的应答技巧和注意事项,需要的朋友参考一下
本文向大家介绍高阶组件(HOC)有哪些优点和缺点?相关面试题,主要包含被问及高阶组件(HOC)有哪些优点和缺点?时的应答技巧和注意事项,需要的朋友参考一下 HOC 优点 通过传递props去影响内层组件的状态,不直接改变内层组件的状态,降低了耦合度 缺点 组件多层嵌套, 增加复杂度与理解成本 ref隔断, React.forwardRef 来解决 高阶组件多层嵌套,相同命名的props会覆盖老属性
我试图理解React的高阶组件结构,但是所有的参考资料都假设您已经理解了在编写:BaseComponent{…this.props}{…this.state}时,spread操作符在高阶组件中的作用。如果组件已经作为道具传入,为什么有必要像这样展开道具?