当前位置:首页 > 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>
  );
}

带表单的新增功能

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

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:

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
分享给朋友:

相关文章

vue实现动态路由按钮

vue实现动态路由按钮

实现动态路由按钮的思路 动态路由按钮通常指根据用户权限或角色动态显示可访问的路由按钮。Vue中可通过路由配置、权限验证和动态渲染实现。 路由配置与权限标识 在路由配置中添加meta字段标识权限:…

vue实现按钮渐变

vue实现按钮渐变

实现按钮渐变的几种方法 使用CSS线性渐变 通过CSS的background属性结合linear-gradient函数实现颜色渐变效果。在Vue组件的<style>部分直接定义样式: .…

css3按钮制作

css3按钮制作

使用CSS3制作按钮的方法 基础按钮样式 通过padding、border-radius和background-color属性创建基础按钮样式: .btn { display: inline-…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment 基本…