当前位置:首页 > React

react 实现append

2026-01-26 14:38:28React

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

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

使用状态管理动态内容

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

react 实现append

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:

react 实现append

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 层级的情况

标签: reactappend
分享给朋友:

相关文章

react如何开发组件

react如何开发组件

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

如何优化react

如何优化react

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

react如何收录

react如何收录

React 收录方法 React 的收录主要涉及搜索引擎优化(SEO)和预渲染技术。由于 React 是单页应用(SPA),默认情况下内容由 JavaScript 动态生成,可能导致搜索引擎爬虫难以收…

react如何验证

react如何验证

表单验证方法 在React中验证表单数据通常使用以下几种方式: 内置HTML5验证 利用HTML5原生表单验证属性如required、pattern等,结合form.noValidate属性禁用浏览…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…

react如何分

react如何分

React 分页实现方法 在 React 中实现分页功能可以通过多种方式完成,以下是几种常见的方法: 使用状态管理分页数据 在组件内部维护当前页码和每页数据量的状态,通过计算切片数据实现分页。…