当前位置:首页 > 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官方推荐组合优于继承。

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

react如何扩展组件功能

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

相关文章

vue如何实现目录组件

vue如何实现目录组件

Vue 目录组件实现方法 基于递归组件实现树形目录 递归组件适合处理嵌套层级不确定的目录结构。创建一个可自调用的组件,通过 v-for 遍历子节点并递归渲染自身。 <template>…

vue电影功能实现

vue电影功能实现

Vue电影功能实现 数据获取与展示 使用Axios或Fetch API从电影API获取数据,例如TMDB或豆瓣API。在Vue组件的created或mounted生命周期钩子中发起请求,将返回的电影数…

Vue组件实现方法

Vue组件实现方法

Vue组件的基本实现方法 Vue组件是Vue.js的核心概念之一,用于构建可复用的UI模块。以下是Vue组件的几种常见实现方式: 单文件组件(SFC) 使用.vue文件格式,将模板、脚本和样式封装…

vue radio组件实现

vue radio组件实现

Vue Radio 组件实现 在 Vue 中实现 Radio 组件可以通过原生 HTML 的 <input type="radio"> 结合 Vue 的响应式特性,或者使用第三方 UI 库…

vue实现账号注册功能

vue实现账号注册功能

实现账号注册功能 在Vue中实现账号注册功能通常需要结合前端表单和后端API交互。以下是一个完整的实现方案: 创建注册表单组件 新建一个Register.vue组件,包含基本的注册表单字段:…

vue组件传值实现分页

vue组件传值实现分页

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