当前位置:首页 > React

react实现通讯录

2026-01-27 14:13:57React

实现React通讯录的基本步骤

使用React实现通讯录功能需要管理联系人数据、提供添加/编辑/删除功能,并支持搜索或分组展示。以下是核心实现方法:

数据状态管理

创建联系人状态和操作函数,使用useStateuseReducer管理数据:

const [contacts, setContacts] = useState([
  { id: 1, name: '张三', phone: '13800138000', group: '同事' },
  { id: 2, name: '李四', phone: '13900139000', group: '朋友' }
]);

添加联系人功能

实现表单提交处理函数:

const handleAddContact = (newContact) => {
  setContacts([...contacts, { ...newContact, id: Date.now() }]);
};

搜索过滤功能

通过输入框动态过滤联系人:

const [searchTerm, setSearchTerm] = useState('');
const filteredContacts = contacts.filter(contact => 
  contact.name.toLowerCase().includes(searchTerm.toLowerCase())
);

按字母分组展示

实现联系人按首字母分组:

const groupByLetter = contacts.reduce((groups, contact) => {
  const letter = contact.name.charAt(0).toUpperCase();
  groups[letter] = groups[letter] || [];
  groups[letter].push(contact);
  return groups;
}, {});

完整组件示例

function ContactList() {
  const [contacts, setContacts] = useState(initialContacts);
  const [searchTerm, setSearchTerm] = useState('');

  const filteredContacts = contacts.filter(contact =>
    contact.name.toLowerCase().includes(searchTerm.toLowerCase())
  );

  return (
    <div>
      <input 
        type="text" 
        placeholder="搜索联系人" 
        onChange={(e) => setSearchTerm(e.target.value)}
      />

      {Object.entries(groupByLetter(filteredContacts)).map(([letter, group]) => (
        <div key={letter}>
          <h3>{letter}</h3>
          {group.map(contact => (
            <div key={contact.id}>
              {contact.name} - {contact.phone}
            </div>
          ))}
        </div>
      ))}
    </div>
  );
}

进阶优化方案

使用Context或Redux管理全局状态 实现本地存储持久化(localStorage) 添加编辑和删除功能按钮 使用第三方库如react-virtualized优化长列表性能 引入UI库(如Material-UI)美化界面

样式与交互增强

添加CSS过渡动画提升用户体验 实现联系人详情模态框 支持拖拽排序功能 添加电话号码格式验证

react实现通讯录

通过以上方法可以构建功能完整的React通讯录应用,根据实际需求选择适当的功能组合和复杂度控制。

标签: 通讯录react
分享给朋友:

相关文章

react如何打包

react如何打包

打包 React 项目的基本步骤 React 项目通常使用 create-react-app 或类似的脚手架工具创建,这些工具内置了打包功能。以下是打包 React 项目的详细方法: 安装依赖并构建…

odyssey react 如何

odyssey react 如何

Odyssey React 是耐克推出的一款跑鞋系列,以其轻量化设计和React泡沫缓震技术著称。以下是关于该系列鞋款的主要特点和使用建议: 核心特点 React泡沫中底提供出色的能量回馈和缓震效果…

vscode如何配置react

vscode如何配置react

配置 VSCode 进行 React 开发 安装必要插件 ES7+ React/Redux/React-Native snippets:提供 React 代码片段快速生成功能。 Prettier -…

react如何同步修改

react如何同步修改

同步修改状态的常见方法 在React中同步修改状态通常涉及使用useState或useReducer钩子,结合React的批处理机制确保状态更新的一致性。以下是几种典型场景的解决方案: 直接使用us…

react elementUI

react elementUI

React 和 Element UI 是两个不同的技术栈,但可以通过整合实现类似功能。以下是相关解决方案和替代方案: React 与 Element UI 的替代方案 Element UI 是为 V…

react如何激活跟踪

react如何激活跟踪

激活 React 跟踪的方法 React 跟踪通常指性能监控、状态变更追踪或用户行为分析。以下是几种常见场景的激活方式: 使用 React DevTools React DevTools 是官方…