当前位置:首页 > 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 组件 在 React 中,销毁组件通常涉及清理副作用(如事件监听器、定时器或订阅)以防止内存泄漏。以下是实现组件销毁的常见方法: 使用 useEffect 清理副作用 在函数组件…

vue实现购物按钮

vue实现购物按钮

Vue 实现购物车按钮 在 Vue 中实现购物车按钮通常需要结合组件化开发、状态管理和事件处理。以下是实现购物车按钮的常见方法: 创建购物车按钮组件 <template> &…

vue实现动态路由按钮

vue实现动态路由按钮

Vue 实现动态路由按钮的方法 动态路由按钮的实现通常涉及权限控制,根据用户角色或权限动态显示或隐藏路由按钮。以下是几种常见方法: 基于路由元信息(meta)和v-if控制 在路由配置中添加权限标…

vue实现按钮改变文本

vue实现按钮改变文本

Vue 实现按钮改变文本的方法 在 Vue 中实现按钮点击改变文本的功能,可以通过数据绑定和事件处理来实现。以下是几种常见的方法: 方法 1:使用 v-on 和 v-bind 指令 通过 v-on…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修…