返回
React 高阶组件(HOC)—— 让组件更“高”一等
前端
2023-10-18 07:00:34
定义:解开高阶组件的神秘面纱
高阶组件(HOC)是一种设计模式,它允许你将一个组件作为参数传递给另一个函数,并返回一个新的组件。这个新组件将继承原组件的所有特性,但也可以添加新的功能或行为。
实例:小试牛刀,领略高阶组件的魅力
以下是一个使用高阶组件的小例子:
const withLogging = (Component) => {
return (props) => {
console.log(`Component ${Component.name} is being rendered.`);
return <Component {...props} />;
};
};
const MyComponent = (props) => {
return <h1>Hello, {props.name}!</h1>;
};
const LoggedMyComponent = withLogging(MyComponent);
在这个例子中,withLogging
函数是一个高阶组件,它接受一个组件作为参数,并返回一个新的组件,该组件将记录每次渲染组件时的情况。
二次封装 Antd 弹窗组件,解锁代码复用的新姿势
高阶组件的一个常见用例是二次封装UI组件库中的组件。例如,你可以使用高阶组件来为 Antd 的 Modal 组件添加一个新的功能,比如在打开或关闭弹窗时显示一个加载指示器。
const withLoading = (Component) => {
return (props) => {
const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
if (props.loading) {
setIsLoading(true);
} else {
setTimeout(() => {
setIsLoading(false);
}, 300);
}
}, [props.loading]);
return (
<>
{isLoading && <LoadingIndicator />}
<Component {...props} />
</>
);
};
};
const LoadingModal = withLoading(Modal);
现在,你可以在你的代码中使用 LoadingModal
组件,它将自动在打开或关闭时显示一个加载指示器。
正文开始:敲业务敲到一定量的时候,就需要发起一个“质变”。而这个“质变”就是高阶组件
在 React 中,高阶组件是实现代码复用和组件组合的利器。通过使用高阶组件,你可以轻松地为现有组件添加新的功能或行为,而无需修改组件本身的代码。这使得你的代码更加模块化和可维护。
结语:高阶组件——React组件世界里的多面手
总而言之,高阶组件是一种非常强大的技术,它可以帮助你编写出更灵活、更可重用的 React 组件。如果你还没有使用过高阶组件,我强烈建议你尝试一下。