方向三-前端实践记录-待办事项列表HTML| 豆包MarsCode AI刷题

99 阅读8分钟

引言

前端开发是Web开发中的重要部分,其中React作为当今流行的前端框架之一,以其组件化开发方式和强大的生态系统,深受开发者喜爱。在本次实践中,我们将通过 React 实现一个功能简单但界面美观的待办事项列表(Todo List),并配合 CSS布局技巧 对界面进行美化和布局优化。

本文将详细记录待办事项列表的开发过程,涵盖从项目初始化到功能实现、外观设计,以及 CSS 的布局技巧和应用场景的综合实践。希望本篇伴学笔记能帮助初学者快速掌握 React 开发以及 CSS 布局的相关知识。

一、实践目标

  1. 实现功能

    • 用户可以添加待办事项。
    • 用户可以编辑已存在的待办事项。
    • 用户可以删除待办事项。
  2. 优化外观

    • 增加导航栏,提升整体视觉层次感。
    • 调整按钮布局与间距,让界面更整洁美观。
    • 使用浅蓝色背景与卡片式设计增强用户体验。
  3. CSS布局技巧实践

    • 使用弹性盒子(Flexbox)实现导航栏、按钮布局。
    • 使用响应式设计确保界面在不同设备上的适配性。
    • 总结并对比常见 CSS 布局技巧(如浮动、定位、弹性盒子布局)及其适用场景。

二、开发过程记录

(1)初始化项目

在本实践中,我们使用 Create React App 快速创建了一个 React 项目:

  1. 打开终端,执行以下命令:

    npx create-react-app todo-app
    cd todo-app
    npm start
    
  2. 确保项目启动后,访问 http://localhost:3000,初始 React 页面已正常显示。

(2)项目结构设计

为了保持代码的模块化和易维护性,我们采用了以下项目结构:

src/
├── components/            # 存放独立的组件
│   ├── Navbar.jsx         # 导航栏组件
│   ├── TodoList.jsx       # 待办事项列表组件
│   ├── TodoItem.jsx       # 待办事项单项组件
│   ├── Navbar.css         # 导航栏样式
│   ├── TodoList.css       # 待办事项列表样式
│   └── TodoItem.css       # 待办事项单项样式
├── App.jsx                # 主应用组件
├── App.css                # 全局样式
└── index.js               # 项目入口

三、功能实现与核心代码解析

1. 用户可以添加待办事项

功能描述:在输入框中输入任务内容,点击“Add”按钮,即可将任务添加到待办事项列表中。

实现逻辑

  • 使用 React 的 useState 管理待办事项数组。
  • 每次用户点击“Add”时,将输入内容作为新的任务对象存入数组。

代码片段


const [todos, setTodos] = useState([]); // 管理任务列表

const addTodo = (text) => {
  const newTodo = { id: Date.now(), text, isEditing: false };
  setTodos([...todos, newTodo]); // 添加新任务
};

2. 用户可以编辑待办事项

功能描述:点击任务项中的“Edit”按钮,可进入编辑模式,修改任务内容。

实现逻辑

  • 通过 isEditing 标志控制编辑状态。
  • 如果任务处于编辑状态,显示输入框;否则显示任务内容。

代码片段

const toggleEdit = (id) => {
  setTodos(todos.map(todo => 
    todo.id === id ? { ...todo, isEditing: !todo.isEditing } : todo
  ));
};

const updateTodo = (id, updatedText) => {
  setTodos(todos.map(todo => 
    todo.id === id ? { ...todo, text: updatedText, isEditing: false } : todo
  ));
};

3. 用户可以删除待办事项

功能描述:点击任务项中的“Delete”按钮,可将任务从列表中移除。

实现逻辑

  • 使用 filter 方法,根据任务 ID 删除指定任务。

代码片段

const deleteTodo = (id) => {
  setTodos(todos.filter(todo => todo.id !== id));
};

四、CSS布局技巧及外观优化

优化前的简单的待办事项前端模型:

image.png

image.png

优化后:

image.png

1. 浅蓝色背景与卡片式设计

为了让界面更加清新简洁,我们选择了浅蓝色作为背景色,同时为待办事项列表的容器添加白色卡片样式。

实现代码

/* App.css */
body {
  margin: 0;
  font-family: Arial, sans-serif;
  background-color: #f0f8ff; /* 浅蓝色背景 */
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.app {
  width: 100%;
  max-width: 600px;
  background: white;
  border-radius: 10px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

.app-container {
  padding: 20px;
}

2. 导航栏的布局实现

设计思路:导航栏使用弹性盒子布局(Flexbox),水平居中显示应用标题。

实现代码

/* Navbar.css */
.navbar {
  background-color: #007bff;
  padding: 10px 20px;
  color: white;
  text-align: center;
  border-radius: 10px 10px 0 0;
}

.navbar-title {
  margin: 0;
  font-size: 1.5rem;
}

3. 按钮的布局与间距优化

为了让按钮间距更加合理,使用 margin-left 为按钮添加间隔,同时保持按钮的整体风格一致。

实现代码

/* TodoItem.css */
.btn {
  padding: 5px 10px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  margin-left: 10px; /* 添加按钮间距 */
}

五、常见 CSS 布局技巧总结

在实际开发中,我们通常会根据不同场景选择合适的布局方式。以下是常用 CSS 布局技巧的对比:

布局方式实现方法适用场景示例
浮动布局float文本环绕、简单的两列布局图片排版
定位布局position固定导航栏、弹窗弹窗/提示框
弹性盒子布局display: flex水平/垂直居中、多列布局导航栏/任务列表
网格布局display: grid精确布局控制,复杂的响应式设计图文混排

六、总结与心得

通过本次实践,我们成功实现了一个功能齐全、美观清新的待办事项列表。在开发过程中,React 的组件化开发方式和 CSS 布局技巧为我们提供了极大的便利。以下是一些实践中的收获:

  1. 模块化开发:将导航栏、任务列表、任务项拆分为独立组件,提高代码复用性和可维护性。
  2. 布局优化:Flexbox 是解决简单布局问题的利器,能快速实现元素居中和间距调整。
  3. 界面美化:通过浅蓝色背景、卡片设计和按钮样式优化,提升了整体视觉效果。

希望本篇伴学笔记能为同学们提供参考和启发!如果您有任何问题,欢迎留言交流。

给 React 初学者的建议

React 是一个强大的前端开发工具,但对于初学者来说,第一次接触它可能会有些迷茫。以下是一些针对 React 初学者的建议,希望能帮助你更高效地学习和应用 React:

1. 打好 JavaScript 基础

React 本质上是 JavaScript 的一个库,因此扎实的 JavaScript 基础非常重要。在学习 React 之前,建议掌握以下内容:

  • ES6+ 语法(如 letconst、箭头函数、解构赋值等)。
  • 数组操作方法(如 mapfilterreduce)。
  • 模块化与导入导出(importexport)。

JavaScript 是 React 的核心语言,只有熟练掌握 JavaScript,才能更加灵活地应对 React 的复杂场景。


2. 理解 React 的核心概念

初学 React 时,建议先集中学习以下核心概念:

  • 组件:React 的基础单位。了解函数式组件和类组件的区别(推荐从函数式组件开始)。
  • 状态管理(State) :React 中用来管理组件内部数据的机制。
  • 属性(Props) :通过父组件向子组件传递数据,类似于函数参数。
  • 生命周期:如果学习类组件,需理解生命周期方法;如果学习函数组件,需掌握 useEffect 钩子。

在学习过程中,可以通过构建简单的项目(如计数器或待办事项列表)来实践这些概念。


3. 从小项目开始

初学者通常容易陷入“学了很多理论却不知道如何实践”的困境。解决方法是从小项目开始练手,比如:

  • 实现一个计数器(增减按钮)。
  • 创建一个待办事项列表(添加、删除和标记功能)。
  • 制作一个简单的商品展示页面(使用 props 显示商品信息)。

这些小项目不仅可以帮助巩固基础,还能提升信心。


4. 善用 React 官方文档

React 官方文档是最权威的学习资源。文档条理清晰,覆盖了从基础到进阶的内容。初学者可以从“入门教程”部分开始,通过官方提供的实例一步步学习。

推荐学习顺序:

  1. 快速入门(Learn React)。
  2. 核心概念(Components、State、Props)。
  3. React Hooks(useStateuseEffect)。

5. 多调试,多动手

编程是实践性的技能,只有多动手才能真正掌握 React。在开发过程中,遇到问题时,可以尝试:

  • 打印调试(console.log)。
  • 使用 React 开发者工具(React DevTools)检查组件的状态和属性。
  • 多尝试修改和优化代码,逐步熟悉 React 的工作原理。

6. 学习现代工具链

现代前端开发中,React 通常与以下工具配合使用:

  • Webpack 或 Vite:打包工具,用于构建应用。
  • ESLint 和 Prettier:代码质量检查和格式化工具。
  • npm 或 Yarn:包管理工具,用于安装依赖。

初学时,可以直接使用 Create React App 或 Vite 来快速创建项目,省去配置工具链的繁琐过程。


7. 保持耐心和好奇心

React 学习需要时间,初学者在遇到困难时不要轻易放弃。可以尝试:

  • 加入前端学习社区,与其他学习者交流。
  • 阅读技术博客,了解实践经验和最佳实践。
  • 定期总结自己的学习成果,逐步提升。

React 的生态庞大且灵活,学习过程中保持好奇心,勇于探索,你会发现它不仅仅是一个开发工具,更是一种独特的开发思维。


React 是一个充满潜力的前端框架,虽然起步时可能有些陡峭,但只要循序渐进,多实践多总结,你一定能掌握它并享受到开发的乐趣!