如何在 ReactJS 中添加标签输入框?


我们可以通过为输入字段创建一个新的组件并在 NextJS 中使用 onChange 事件处理输入的标签来添加标签输入框。我们还可以使用状态来存储标签并在输入时显示它们。最后,我们可以添加一个按钮或函数来提交最终的标签列表。让我们首先了解什么是 ReactJS 和标签输入框。

ReactJS

React 是一个用于构建用户界面的 JavaScript 库。它使创建交互式 UI 变得容易。为应用程序中的每个状态设计简单的视图,当您的数据发生变化时,React 将有效地更新和渲染正确的组件。您还可以构建封装组件来管理它们自己的状态,然后将它们组合起来以创建复杂的 UI。

ReactJS 可以创建小型和大型、复杂的应用程序。它提供了一组基本但可靠的功能来启动 Web 应用程序。它易于掌握现代和遗留应用程序,并且是更快地编写功能的方法。React 提供了大量现成的组件。

标签输入框

标签输入框是一个 UI 元素,允许用户在输入字段中添加标签或关键词。这些标签通常用于对相关项目进行分类或分组,并且可用于搜索或过滤目的。

标签输入框通常具有一个输入字段,用户可以在其中键入标签,以及一个按钮将标签添加到列表中。然后可以将标签显示为单个元素,通常带有关闭按钮以允许用户删除标签。某些标签输入框还具有自动完成功能,以便在用户键入时建议现有标签。

首先创建一个新的 NextJS 应用程序,并在我们的开发服务器上运行它,如下所示:

npx create-react-app tag-app
cd tag-app
npm start

方法

  • 通过在终端中运行以下命令来安装 react-tag-input 库:

npm install react-tag-input
  • 通过在文件顶部添加以下行,将库导入到您的组件文件中:

import { TagInput } from 'react-tag-input';
  • 创建一个状态变量来保存标签,并将其初始化为空数组:

const [tags, setTags] = useState([]);
  • 将 TagInput 组件添加到您的 JSX 代码中,并传入标签状态变量和一个用于处理标签更改的回调函数:

<TagInput tags={tags} onChange={(newTags) => setTags(newTags)} />
  • (可选)您还可以通过传入其他 props(如占位符和样式)来自定义 TagInput 组件。例如,要更改输入字段的占位符文本,您可以添加以下 prop:

<TagInput tags={tags} onChange={(newTags) => setTags(newTags)} placeholder="Enter tags here" />
  • 根据需要在您的组件逻辑中使用标签状态变量。例如,您可以在列表中显示标签或将它们用作 API 调用的输入:

<ul>
   {tags.map((tag) => <li key={tag}>{tag}</li>)}
</ul>

就是这样!您现在在 ReactJS 项目中拥有了一个功能性的标签输入框。

示例

import React, { useState } from 'react';
import { render } from 'react-dom';
import { COUNTRIES } from './countries';
import './style.css';
import { WithContext as ReactTags } from 'react-tag-input';
const suggestions = COUNTRIES.map((country) => {
   return {
      id: country,
      text: country,
   };
});
const KeyCodes = {
   comma: 188,
   enter: 13,
};
const delimiters = [KeyCodes.comma, KeyCodes.enter];
const App = () => {
   const [tags, setTags] = React.useState([
      { id: 'Thailand', text: 'Thailand' },
      { id: 'India', text: 'India' },
      { id: 'Vietnam', text: 'Vietnam' },
      { id: 'Turkey', text: 'Turkey' },
   ]);
   const handleDelete = (i) => {
   setTags(tags.filter((tag, index) => index !== i));
};
const handleAddition = (tag) => {
   setTags([...tags, tag]);
};
const handleDrag = (tag, currPos, newPos) => {
   const newTags = tags.slice();
   newTags.splice(currPos, 1);
   newTags.splice(newPos, 0, tag);
   // re-render
   setTags(newTags);
};
const handleTagClick = (index) => {
   console.log('The tag at index ' + index + ' was clicked');
};
return (
   <div className="app">
      <h1> React Tags Example </h1>
         <div>
            <ReactTags
               tags={tags}
               suggestions={suggestions}
               delimiters={delimiters}
               handleDelete={handleDelete}
               handleAddition={handleAddition}
               handleDrag={handleDrag}
               handleTagClick={handleTagClick}
               inputFieldPosition="bottom"
               autocomplete
               editable
            />
         </div>
      </div>
   );
};
render(<App />, document.getElementById('root'));

输出

更新于: 2023年2月13日

4K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告