当前位置:首页 > React

实现增删react

2026-01-26 12:01:22React

在 React 中实现增删操作

1. 创建状态管理 使用 useState 钩子管理数据列表和输入框状态。例如:

const [items, setItems] = useState([]);
const [inputValue, setInputValue] = useState('');

2. 添加操作实现 通过状态更新函数将新项添加到列表:

const handleAdd = () => {
  if (inputValue.trim()) {
    setItems([...items, { id: Date.now(), text: inputValue }]);
    setInputValue('');
  }
};

3. 删除操作实现 通过过滤列表实现删除指定项:

const handleDelete = (id) => {
  setItems(items.filter(item => item.id !== id));
};

4. 渲染列表与交互 在组件中绑定事件并渲染列表:

return (
  <div>
    <input 
      value={inputValue}
      onChange={(e) => setInputValue(e.target.value)}
    />
    <button onClick={handleAdd}>添加</button>
    <ul>
      {items.map(item => (
        <li key={item.id}>
          {item.text}
          <button onClick={() => handleDelete(item.id)}>删除</button>
        </li>
      ))}
    </ul>
  </div>
);

使用 useReducer 的进阶方案

对于复杂状态逻辑,可采用 useReducer

1. 定义 reducer 函数

const reducer = (state, action) => {
  switch (action.type) {
    case 'ADD':
      return [...state, action.payload];
    case 'DELETE':
      return state.filter(item => item.id !== action.payload);
    default:
      return state;
  }
};

2. 初始化并派发动作

const [state, dispatch] = useReducer(reducer, []);

const handleAdd = () => {
  dispatch({
    type: 'ADD',
    payload: { id: Date.now(), text: inputValue }
  });
};

const handleDelete = (id) => {
  dispatch({ type: 'DELETE', payload: id });
};

性能优化建议

  • 为列表项添加唯一 key 属性
  • 复杂场景考虑使用 useMemouseCallback 避免不必要的渲染
  • 删除操作可添加确认对话框提升用户体验

完整组件示例

import React, { useState } from 'react';

function ItemList() {
  const [items, setItems] = useState([]);
  const [inputValue, setInputValue] = useState('');

  const handleAdd = () => {
    if (inputValue.trim()) {
      setItems([...items, { id: Date.now(), text: inputValue }]);
      setInputValue('');
    }
  };

  const handleDelete = (id) => {
    setItems(items.filter(item => item.id !== id));
  };

  return (
    <div>
      <input
        value={inputValue}
        onChange={(e) => setInputValue(e.target.value)}
        placeholder="输入内容"
      />
      <button onClick={handleAdd}>添加</button>
      <ul>
        {items.map(item => (
          <li key={item.id}>
            {item.text}
            <button onClick={() => handleDelete(item.id)}>删除</button>
          </li>
        ))}
      </ul>
    </div>
  );
}

实现增删react

标签: react
分享给朋友:

相关文章

react如何开发组件

react如何开发组件

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

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Contex…

react如何部署

react如何部署

部署 React 应用的常见方法 使用静态服务器部署 React 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态…

react如何卸载

react如何卸载

卸载 React 项目或依赖 如果需要完全卸载 React 项目或相关依赖,可以按照以下步骤操作: 删除项目文件夹 直接删除整个项目文件夹是最彻底的方式。确保已备份重要代码或配置文件。 卸载全…