nextjs 实现TodoList网页应用案例
创始人
2024-11-05 01:38:02
0

参考:
https://nextjs.org/

Next.js 是用于网络的一种 React 框架。一些世界上最大的公司在使用它,它能够借助 React 组件的力量让您创建高质量的网络应用程序。

1、创建项目:

另外注意:pages与app路由存在冲突,如果有app文件夹删除,比如这里创建的就用src下面app文件夹,整体删除,不然构建项目会报错

npx create-next-app@latest todolist cd todolist 

在这里插入图片描述
在这里插入图片描述

2、创建组件、页面
在这里插入图片描述

pages目录下创建index.js

import { useState, useEffect } from 'react' import TodoForm from '../components/TodoForm' import TodoList from '../components/TodoList'  export default function Home() {   const [todos, setTodos] = useState([])    useEffect(() => {     const storedTodos = JSON.parse(localStorage.getItem('todos') || '[]')     setTodos(storedTodos)   }, [])    useEffect(() => {     localStorage.setItem('todos', JSON.stringify(todos))   }, [todos])    const addTodo = (text) => {     setTodos([{ text, completed: false }, ...todos])   }    const toggleTodo = (index) => {     const newTodos = [...todos]     newTodos[index].completed = !newTodos[index].completed     setTodos(newTodos)   }    const deleteTodo = (index) => {     const newTodos = todos.filter((_, i) => i !== index)     setTodos(newTodos)   }    return (     

TodoList

addTodo} /> todos} toggleTodo={toggleTodo} deleteTodo={deleteTodo} />
) }

pages目录下创建_app.js

import '../styles/globals.css'  function MyApp({ Component, pageProps }) {   return ...pageProps} /> }  export default MyApp 

在components目录下创建TodoForm.js

import { useState } from 'react'  export default function TodoForm({ addTodo }) {     const [value, setValue] = useState('')        const handleSubmit = (e) => {       e.preventDefault()       if (!value) return       addTodo(value)       setValue('')     }        return (       
handleSubmit} className="todo-form"> value} onChange={(e) => setValue(e.target.value)} placeholder="Add a todo" />
) }

在components目录下创建TodoList.js:

export default function TodoList({ todos, toggleTodo, deleteTodo }) {     return (       
    {todos.map((todo, index) => (
  • () => toggleTodo(index)} /> {todo.text}
  • ))}
) }

在styles目录下的globals.css中添加样式

body {   font-family: Arial, sans-serif;   max-width: 500px;   margin: 0 auto;   padding: 20px; }  h1 {   text-align: center; }  .todo-form {   display: flex;   margin-bottom: 20px; }  .todo-form input {   flex-grow: 1;   padding: 10px;   font-size: 16px;   border: 1px solid #ddd;   border-radius: 4px 0 0 4px; }  .todo-form button {   padding: 10px 20px;   font-size: 16px;   background-color: #4CAF50;   color: white;   border: none;   border-radius: 0 4px 4px 0;   cursor: pointer; }  .todo-list {   list-style-type: none;   padding: 0; }  .todo-item {   display: flex;   align-items: center;   padding: 10px;   background-color: #f9f9f9;   border: 1px solid #ddd;   margin-bottom: 10px;   border-radius: 4px; }  .todo-item.completed {   text-decoration: line-through;   opacity: 0.6; }  .todo-item input[type="checkbox"] {   margin-right: 10px; }  .todo-item button {   margin-left: auto;   background-color: #f44336;   color: white;   border: none;   padding: 5px 10px;   border-radius: 4px;   cursor: pointer; } 

2、运行

测试

npm run dev 

在这里插入图片描述
在这里插入图片描述

构建部署

npm run build 

相关内容

热门资讯

3分钟了解!德普之星透视辅助软... 3分钟了解!德普之星透视辅助软件是真的吗,wejoker开挂,总结教程(有挂技巧)1、实时德普之星透...
5分钟辅助!途游四川小程序规律... 5分钟辅助!途游四川小程序规律(辅助挂)确实真的是有辅助方法(详细教程)1.途游四川小程序规律 选牌...
5分钟了解!购买的wpk辅助在... 5分钟了解!购买的wpk辅助在哪里下载,pokemomo辅助软件,演示教程(有挂技巧)1、超多福利:...
第1分钟辅助!拱趴游戏诀窍(辅... 第1分钟辅助!拱趴游戏诀窍(辅助挂)总是真的是有辅助软件(有人有挂)1、任何拱趴游戏诀窍透视是真的假...
第7分钟辅助!手机挂机软件(辅... 第7分钟辅助!手机挂机软件(辅助挂)确实有辅助插件(今日头条)1)手机挂机软件免费钻石:进一步探索手...
两分钟了解!wpk透视插件,德... 两分钟了解!wpk透视插件,德州之星扫描器,妙招教程(有挂教程)进入游戏-大厅左侧-新手福利-激活码...
1分钟辅助!佛手十三道辅助器(... 1分钟辅助!佛手十三道辅助器(辅助挂)确实存在有辅助方法(有挂存在)佛手十三道辅助器破解侠是真的助透...
第十分钟了解!we poker... 第十分钟了解!we poker免费辅助器,拱趴大菠萝自动计算机器人,攻略教程(真的有挂)1、金币登录...
十分钟辅助!微乐四川麻将辅助器... 十分钟辅助!微乐四川麻将辅助器(辅助挂)其实有辅助教程(有挂方针)微乐四川麻将辅助器脚本下载中分为三...
九分钟了解!wepoker有插... 九分钟了解!wepoker有插件吗,wepoker辅助器有哪些功能,手筋教程(有挂教程)1、操作简单...