当前位置: 首页 > news >正文

next.js(二)——从react到next.js

新建一个文件为package.json内容为

{}


在项目根目录下执行

npm install react@latest react-dom@latest next@latest


然后package.json文件里新增内容,如下

{"dependencies": {"next": "^16.0.1","react": "^19.2.0","react-dom": "^19.2.0"}
}

之后,就可以删除掉一部分代码,只保留jsx代码,并将原html后缀改为.jsx
剩余代码如下

import { useState } from 'react'function Header({title}){console.log({title})
}function HomePage(){const names = ['Green','Blue','John','wang']const [likes,setLikes] = useState(0);function handleClick(){setLikes(likes + 1)}return (<div><Header title='hello gy'/><ul>{names.map((name)=>(<li key={name}>{name}</li>))}</ul><button onClick={handleClick}>Likes {likes}</button></div>)}


next.js使用文件做路由,所以就不需要代码来定义路由,直接使用文件和文件夹即可
比如app下的page.js是应用程序的主页面
layer.js是应用程序的主布局文件

运行上面的代码会报错,因为next.js默认是服务器组件,上述代码应该放在客户端

所以就涉及到服务器端和客户端

如果要使用客户端组件,需要把部分代码挪到另一个文件并使用client组件

app目录下创建like-button.js,把点击相关的代码挪进去,并使用'use client'

'use client';import { useState } from 'react'export default function LikeButton(){const [likes,setLikes] = useState(0);function handleClick(){setLikes(likes + 1)}return <button onClick={handleClick}>Likes {likes}</button>}

另外注意在app目录下需要创建一个layout.js,内容如下

export const metadata = {title: 'Next.js',description: 'Generated by Next.js',
};export default function RootLayout({ children }) {return (<html lang="en"><body>{children}</body></html>);
}

如果不加这个文件会报错

该文件是应用程序的主要布局

随后在page.js里引用刚刚定义的LikeButton组件

import LikeButton  from "./like-button"
function Header({title}){return <h1>{title ? title : 'title'}</h1>
}export default function HomePage(){const names = ['Green','Blue','John','wang']return (<div><Header title='hello gy'/><ul>{names.map((name)=>(<li key={name}>{name}</li>))}</ul><LikeButton/></div>)}

这样运行就没有问题了

http://www.dtcms.com/a/601866.html

相关文章:

  • Android开发自学笔记 --- 构建简单的UI视图
  • ubuntu 升级mysql由mysql5.7.42 升级到8.4.0
  • 项目实战Now in Android:项目模块说明
  • 自己做店铺网站宁波建设有限公司
  • 激活函数是什么,神经网络中为什么要有激活函数
  • 全面且详细地解析神经网络中梯度下降(Gradient Descent, GD)的原理
  • 软考 系统架构设计师历年真题集萃(200)—— 2025年11月系统架构设计师真题3
  • 上海网站建设公司sky建筑装修装饰工程内容
  • 网站建设平台接单周到的商城网站建设
  • MySQL快速入门——使用C_C++连接
  • 机器人教师的课堂管理权限边界讨论:会替代人类教师吗?
  • 南昌网站seo技术厂家网站建设flash
  • 库存周转天数、库存周转率和安全库存如何计算和设定?
  • 福建省建设监理公司网站wordpress 变小程序
  • AI动画创作新工具OiiOii:多Agent系统详解与应用实践
  • LeetCode 面试经典 150_二叉树_填充每个节点的下一个右侧节点指针 II(73_117_C++_中等)(BFS)
  • 玩转 CANN:在 Notebook 中实战 Python 版 ResNet-50
  • 深圳网站建设top028公众号怎么做网站
  • 关于未备案网站网站属性
  • Distributed Architecture: 分布式服务架构演进
  • WPS PPT模板中心:免费模板的查找与使用!
  • Qt 内存管理---创建对象
  • 单页网站还能用吗哪个网站做照片书最好看
  • C语言编译程序与优化技术解析
  • 淄博市住房和城乡建设局官方网站3d模型网
  • Day34-动态规划
  • 衡水网站建设知识做甜品网站的需求分析
  • 千兆网口NET8506与NET8516系列高速数字化仪,为高动态范围信号采集提供了全面的解决方案
  • 小程序开通aso优化分析
  • 拉取github更新到本地