当前位置:首页 > React

react如何扩展组件功能

2026-01-24 23:26:23React

高阶组件(HOC)

高阶组件是一种函数,接收一个组件并返回一个新组件。通过包裹原始组件,可以注入额外的props或逻辑。适用于横切关注点(如权限控制、日志记录)。

function withLogging(WrappedComponent) {
  return function(props) {
    console.log('Rendered:', WrappedComponent.name);
    return <WrappedComponent {...props} />;
  };
}
const EnhancedComponent = withLogging(MyComponent);

自定义Hook

通过自定义Hook封装可复用的状态逻辑,供多个组件调用。适用于数据获取、表单处理等场景。

function useCounter(initialValue) {
  const [count, setCount] = useState(initialValue);
  const increment = () => setCount(count + 1);
  return { count, increment };
}
function MyComponent() {
  const { count, increment } = useCounter(0);
  return <button onClick={increment}>{count}</button>;
}

组合模式(Composition)

利用children或特定props将子组件/元素组合到父组件中。适用于UI布局或行为扩展。

function Card({ header, children }) {
  return (
    <div className="card">
      <div className="header">{header}</div>
      <div className="body">{children}</div>
    </div>
  );
}
// 使用
<Card header="Title">Content goes here</Card>

Render Props

通过函数prop动态决定渲染内容,实现逻辑与UI的解耦。适用于动态数据渲染。

function MouseTracker({ render }) {
  const [position, setPosition] = useState({ x: 0, y: 0 });
  return render(position);
}
// 使用
<MouseTracker render={({ x, y }) => <div>Mouse at {x}, {y}</div>} />

上下文(Context)API

通过React.createContext共享全局数据,避免逐层传递props。适用于主题、用户身份等跨层级数据。

const ThemeContext = React.createContext('light');
function App() {
  return (
    <ThemeContext.Provider value="dark">
      <Toolbar />
    </ThemeContext.Provider>
  );
}
function Toolbar() {
  const theme = useContext(ThemeContext);
  return <div>Current theme: {theme}</div>;
}

组件继承(慎用)

通过类组件的extends继承父类功能,但React官方推荐组合优于继承。

react如何扩展组件功能

class BaseComponent extends React.Component {
  baseMethod() { /* ... */ }
}
class ChildComponent extends BaseComponent {
  render() {
    this.baseMethod();
    return <div>Extended</div>;
  }
}

标签: 组件功能
分享给朋友:

相关文章

前端实现拖拽功能vue

前端实现拖拽功能vue

实现拖拽功能的基本方法 在Vue中实现拖拽功能可以通过HTML5的拖放API或第三方库如vuedraggable来完成。HTML5的拖放API提供了原生支持,而vuedraggable则简化了列表拖拽…

vue 组件实现

vue 组件实现

Vue 组件实现方法 单文件组件 (SFC) 使用 .vue 文件格式,包含模板、脚本和样式三部分: <template> <div class="example">{{…

vue实现收货功能

vue实现收货功能

Vue实现收货功能的基本思路 收货功能通常涉及前端界面交互、后端数据更新和状态管理。在Vue中,可以通过组件化开发实现这一功能,结合API调用与状态管理工具(如Vuex或Pinia)。 创建收货按钮…

vue动态组件实现

vue动态组件实现

Vue 动态组件实现方法 使用 component 标签与 is 属性 通过 Vue 内置的 <component> 标签和 is 属性实现动态组件切换。is 的值可以是已注册的组件名或导…

vue前端实现打印功能

vue前端实现打印功能

使用Vue实现前端打印功能 使用window.print()方法 Vue中可以直接调用浏览器的window.print()方法实现打印功能。这种方法简单快捷,适用于打印整个页面或特定区域。 meth…

vue组件传值实现分页

vue组件传值实现分页

Vue组件传值实现分页的方法 在Vue中实现分页功能,通常需要父子组件之间的数据传递。以下是几种常见的传值方式: 使用props传递数据 父组件通过props向子组件传递当前页码和总页数等分页信息:…