当前位置:首页 > 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实现vue

react实现vue

React 实现 Vue 功能 React 和 Vue 是两种不同的前端框架,但可以通过一些方法在 React 中实现 Vue 的特性。以下是几种常见 Vue 功能在 React 中的实现方式: 双…

react 如何运行

react 如何运行

运行 React 项目的步骤 安装 Node.js 确保系统已安装 Node.js(建议版本 16+),可通过官网下载并安装。安装后验证版本: node -v npm -v 创建 React 项目…

react如何安装

react如何安装

安装React的步骤 确保已安装Node.js(建议版本12或更高),可通过以下命令检查版本: node -v npm -v 使用Create React App快速搭建项目(推荐): npx c…

react native如何

react native如何

React Native 基础知识 React Native 是一个由 Facebook 开发的框架,用于使用 JavaScript 和 React 构建跨平台移动应用。它允许开发者编写一次代码,同时…

react如何遍历树

react如何遍历树

遍历树结构的常用方法 在React中遍历树结构通常采用递归或迭代的方式。树结构可以是组件树、DOM树或自定义的数据结构。以下是几种常见的实现方法。 递归组件遍历 使用递归组件可以直观地渲染树形结构。…

react如何清空state

react如何清空state

清空 React 组件的 state 在 React 中清空 state 可以通过多种方式实现,具体取决于组件的类型(类组件或函数组件)以及 state 的结构。 类组件中清空 state 在类组件…