当前位置:首页 > React

react 实现append

2026-01-26 14:38:28React

在 React 中实现类似 jQuery 的 append 功能

React 采用声明式编程范式,与 jQuery 的直接 DOM 操作不同。以下是几种实现动态添加元素的方法:

使用状态管理动态内容

通过 React 的状态管理可以动态添加元素到组件中:

import { useState } from 'react';

function AppendExample() {
  const [items, setItems] = useState(['初始项']);

  const appendItem = () => {
    setItems([...items, `新项 ${items.length + 1}`]);
  };

  return (
    <div>
      <button onClick={appendItem}>添加元素</button>
      <ul>
        {items.map((item, index) => (
          <li key={index}>{item}</li>
        ))}
      </ul>
    </div>
  );
}

使用 ref 直接操作 DOM

当确实需要直接操作 DOM 时,可以使用 ref:

import { useRef } from 'react';

function DirectAppend() {
  const containerRef = useRef(null);

  const appendElement = () => {
    const newElement = document.createElement('div');
    newElement.textContent = '动态添加的元素';
    containerRef.current.appendChild(newElement);
  };

  return (
    <div>
      <button onClick={appendElement}>添加元素</button>
      <div ref={containerRef}></div>
    </div>
  );
}

使用 React 门户(Portal)

对于需要将子节点渲染到 DOM 中不同位置的情况:

import { useState } from 'react';
import { createPortal } from 'react-dom';

function PortalExample() {
  const [show, setShow] = useState(false);

  return (
    <div>
      <button onClick={() => setShow(true)}>
        显示模态框
      </button>
      {show && createPortal(
        <div className="modal">
          <p>这是通过门户添加的内容</p>
          <button onClick={() => setShow(false)}>关闭</button>
        </div>,
        document.body
      )}
    </div>
  );
}

动态渲染组件数组

通过维护组件数组来实现动态添加:

function DynamicComponents() {
  const [components, setComponents] = useState([]);

  const addComponent = () => {
    setComponents([
      ...components,
      <div key={components.length}>组件 {components.length + 1}</div>
    ]);
  };

  return (
    <div>
      <button onClick={addComponent}>添加组件</button>
      {components}
    </div>
  );
}

注意事项

  • React 优先推荐使用状态管理而非直接 DOM 操作
  • 直接操作 DOM 可能会与 React 的虚拟 DOM 产生冲突
  • 确保为动态生成的元素添加唯一的 key 属性
  • 门户(Portal)适用于需要突破当前 DOM 层级的情况

react 实现append

标签: reactappend
分享给朋友:

相关文章

react如何测试

react如何测试

React 测试方法 React 应用的测试通常涉及组件测试、集成测试和端到端测试。以下是常用的测试工具和方法: Jest Jest 是 Facebook 开发的 JavaScript 测试框架,适…

react如何鉴定

react如何鉴定

React 鉴权方法 基于路由的鉴权 在 React 中,可以通过封装路由组件实现鉴权。使用 react-router-dom 检查用户是否登录,未登录则跳转至登录页。 import { Ro…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impor…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gree…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…