当前位置:首页 > React

react实现新增按钮

2026-01-26 21:02:11React

实现新增按钮的基本方法

在React中创建一个新增按钮通常需要结合状态管理和事件处理。以下是一个基础实现示例:

import React, { useState } from 'react';

function AddButton() {
  const [items, setItems] = useState([]);

  const handleAdd = () => {
    const newItem = `Item ${items.length + 1}`;
    setItems([...items, newItem]);
  };

  return (
    <div>
      <button onClick={handleAdd}>新增</button>
      <ul>
        {items.map((item, index) => (
          <li key={index}>{item}</li>
        ))}
      </ul>
    </div>
  );
}

带表单的新增功能

当需要用户输入内容时,可以结合表单实现:

react实现新增按钮

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

  const handleSubmit = (e) => {
    e.preventDefault();
    if (inputValue.trim()) {
      setItems([...items, inputValue]);
      setInputValue('');
    }
  };

  return (
    <div>
      <form onSubmit={handleSubmit}>
        <input
          value={inputValue}
          onChange={(e) => setInputValue(e.target.value)}
        />
        <button type="submit">新增</button>
      </form>
      <ul>
        {items.map((item, index) => (
          <li key={index}>{item}</li>
        ))}
      </ul>
    </div>
  );
}

使用自定义Hook封装逻辑

对于复杂场景,可以将新增逻辑封装为自定义Hook:

react实现新增按钮

function useAddItems(initialItems = []) {
  const [items, setItems] = useState(initialItems);

  const addItem = (item) => {
    setItems([...items, item]);
  };

  return [items, addItem];
}

function AddButtonComponent() {
  const [items, addItem] = useAddItems();
  const [input, setInput] = useState('');

  const handleAdd = () => {
    addItem(input);
    setInput('');
  };

  return (
    <div>
      <input value={input} onChange={(e) => setInput(e.target.value)} />
      <button onClick={handleAdd}>新增</button>
    </div>
  );
}

带验证的新增功能

添加输入验证确保数据有效性:

function ValidatedAddForm() {
  const [text, setText] = useState('');
  const [error, setError] = useState('');
  const [list, setList] = useState([]);

  const validate = (value) => {
    if (!value.trim()) return '内容不能为空';
    if (value.length > 20) return '内容过长';
    return '';
  };

  const handleAdd = () => {
    const validationError = validate(text);
    if (validationError) {
      setError(validationError);
      return;
    }

    setList([...list, text]);
    setText('');
    setError('');
  };

  return (
    <div>
      <input
        value={text}
        onChange={(e) => {
          setText(e.target.value);
          setError(validate(e.target.value));
        }}
      />
      {error && <div style={{color: 'red'}}>{error}</div>}
      <button onClick={handleAdd} disabled={!!error}>
        新增
      </button>
    </div>
  );
}

使用Context管理全局状态

当需要在多个组件间共享新增功能时:

const ItemsContext = React.createContext();

function ItemsProvider({children}) {
  const [items, setItems] = useState([]);

  const addItem = (item) => {
    setItems([...items, item]);
  };

  return (
    <ItemsContext.Provider value={{items, addItem}}>
      {children}
    </ItemsContext.Provider>
  );
}

function AddButton() {
  const {addItem} = useContext(ItemsContext);
  const [input, setInput] = useState('');

  return (
    <div>
      <input value={input} onChange={(e) => setInput(e.target.value)} />
      <button onClick={() => {
        addItem(input);
        setInput('');
      }}>
        新增
      </button>
    </div>
  );
}

function App() {
  return (
    <ItemsProvider>
      <AddButton />
      {/* 其他组件 */}
    </ItemsProvider>
  );
}

以上示例涵盖了从基础到进阶的新增按钮实现方式,可根据实际需求选择适合的方案。

标签: 按钮react
分享给朋友:

相关文章

react如何运行

react如何运行

运行React项目的步骤 安装Node.js 确保系统已安装Node.js(建议版本12以上),可从官网下载并安装。Node.js自带npm包管理器,用于后续依赖安装。 创建React项目 使用官方…

react如何收录

react如何收录

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

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。 con…

react如何创建框架

react如何创建框架

React 创建框架的方法 React 本身是一个用于构建用户界面的 JavaScript 库,但可以通过多种方式创建框架或项目结构。以下是几种常见的方法: 使用 Create React App…

react如何代码优化

react如何代码优化

减少不必要的重新渲染 使用 React.memo 包装函数组件以避免在 props 未变化时重新渲染。对于类组件,可以通过 shouldComponentUpdate 或继承 PureComponen…

react如何添加图片

react如何添加图片

在React中添加图片的方法 使用import导入本地图片 将图片文件放在项目目录中(如src/assets),通过import语句引入后作为src属性值: import logo from './…