当前位置:首页 > React

react实现组件方式

2026-01-26 17:58:45React

React 实现组件的常见方式

React 提供了多种实现组件的方式,以下是主要的几种方法:

函数组件 函数组件是使用 JavaScript 函数定义的组件,简洁明了,适合无状态或使用 Hooks 的场景:

function Greeting(props) {
  return <h1>Hello, {props.name}</h1>;
}

类组件 类组件通过继承 React.Component 实现,支持生命周期方法和状态管理:

class Greeting extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

箭头函数组件 箭头函数语法可以更简洁地定义函数组件:

react实现组件方式

const Greeting = (props) => <h1>Hello, {props.name}</h1>;

高阶组件 (HOC) 高阶组件是一个函数,接收一个组件并返回一个新组件,用于复用逻辑:

function withLogging(WrappedComponent) {
  return class extends React.Component {
    componentDidMount() {
      console.log('Component mounted');
    }
    render() {
      return <WrappedComponent {...this.props} />;
    }
  };
}

Render Props 通过 prop 传递渲染逻辑,实现组件间的代码共享:

react实现组件方式

class MouseTracker extends React.Component {
  state = { x: 0, y: 0 };
  handleMouseMove = (event) => {
    this.setState({ x: event.clientX, y: event.clientY });
  };
  render() {
    return (
      <div onMouseMove={this.handleMouseMove}>
        {this.props.render(this.state)}
      </div>
    );
  }
}

自定义 Hooks 封装可复用的状态逻辑,供多个组件使用:

function useCounter(initialValue) {
  const [count, setCount] = useState(initialValue);
  const increment = () => setCount(count + 1);
  return { count, increment };
}

复合组件 通过组合多个组件实现复杂功能,如 Context API 提供者/消费者模式:

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

无渲染组件 只处理逻辑不渲染 UI 的组件,通过子组件或 render prop 输出结果:

function DataFetcher({ url, children }) {
  const [data, setData] = useState(null);
  useEffect(() => {
    fetch(url).then(res => res.json()).then(setData);
  }, [url]);
  return children(data);
}

每种方式适用于不同场景,函数组件和 Hooks 是现代 React 开发的主流选择,而类组件在维护旧代码时仍会见到。高阶组件和 render props 适用于复杂逻辑复用,自定义 Hooks 提供了更灵活的逻辑共享方式。

标签: 组件方式
分享给朋友:

相关文章

vue实现下拉框组件

vue实现下拉框组件

Vue 下拉框组件实现 基础实现 创建基础下拉框组件,使用v-model实现双向数据绑定: <template> <div class="dropdown"> &…

vue实现拖拽组件

vue实现拖拽组件

Vue 实现拖拽组件的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue实现表格组件

vue实现表格组件

Vue 表格组件实现方法 基础表格实现 使用 Vue 的模板语法可以快速实现基础表格功能。通过 v-for 指令循环渲染表格数据。 <template> <table>…

vue组件实现computed

vue组件实现computed

Vue 组件中实现 computed 的方法 在 Vue 组件中,computed 用于声明计算属性,根据依赖的响应式数据动态计算并返回结果。计算属性具有缓存机制,只有当依赖的数据发生变化时才会重新计…

vue组件实现递归

vue组件实现递归

Vue 组件实现递归的方法 在 Vue 中实现递归组件通常用于处理树形结构数据(如菜单、评论嵌套等)。以下是几种常见实现方式: 使用组件名称直接递归 通过组件自身的 name 属性实现递归调用:…

vue 实现 拖拽组件

vue 实现 拖拽组件

Vue 实现拖拽组件的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…