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

Next.js 怎么使用 Chakra UI

创建 next.js 的 react 项目

npx create-next-app@latest

? What is your project named? » next-app

之后的选项按自己需要选择

http://localhost:3000 打开网站查看是否正常显示

安装 @chakra-ui

官方文档

npm i @chakra-ui/react @emotion/react

Add snippets 这步可以不用做,国内网络好像安装不上。

创建 src\components\ui\provider.tsx

"use client";import { ChakraProvider, defaultSystem } from "@chakra-ui/react";
export function Provider({ children }: { children: React.ReactNode }) {return <ChakraProvider value={defaultSystem}>{children}</ChakraProvider>;
}

修改 src\app\layout.tsx

import { Provider } from "../components/ui/provider";return (<html lang="en" suppressHydrationWarning><bodyclassName={`${geistSans.variable} ${geistMono.variable} antialiased`}><Provider>{children}</Provider></body></html>);

需要向 html 元素添加 suppressHydrationWarning 属性,以防止出现关于 next-themes 库的警告。

用 Provider 包裹元素才能使用组件。

创建 src\app\chakra.tsx

import { Button, Stack, Highlight, Switch } from "@chakra-ui/react";
export default function Demo() {return (<Stack><Switch.Root><Switch.HiddenInput /><Switch.Control /><Switch.Label>Activate Chakra</Switch.Label></Switch.Root><Highlightquery="spotlight"styles={{ px: "0.5", bg: "orange.subtle", color: "orange.fg" }}>With the Highlight component, you can spotlight words.</Highlight><Button>Click me</Button></Stack>);
}

在 src\app\page.tsx 中引入组件

import Chakra from './chakra'
<Chakra />

现在启动报错:Hydration errors

If you see an error like this: Hydration failed because the initial server rendered HTML did not match the client, and the error looks similar to:

This is caused by how Next.js hydrates Emotion CSS in --turbo mode. Please remove the --turbo flag from your dev script in your package.json file.

是因为用 -turbo 的原因,可以将 package.json 里的 "dev": "next dev --turbopack" 改为 "dev": "next dev"。改完后不报错了,但是编译会变慢。如果不改只是报错可能也没什么影响。

效果图:

http://www.xdnf.cn/news/1228357.html

相关文章:

  • day38 力扣279.完全平方数 力扣322. 零钱兑换 力扣139.单词拆分
  • python---literal_eval函数
  • 轨道追逃博弈仿真
  • Node.js 路由与中间件
  • StarRocks vs ClickHouse:2025 年 OLAP 引擎终极对比指南
  • 高效截图的4款工具深度解析
  • cmd怎么取消关机命令
  • Oracle 11g RAC集群部署手册(二)
  • C语言(长期更新)第7讲:VS实用调试技巧
  • 仿真电路:(十七下)DC-DC升压压电路原理简单仿真
  • 【DL学习笔记】计算图与自动求导
  • 鸿蒙智选携手IAM进驻长隆熊猫村,为国宝打造智慧健康呼吸新空间
  • [硬件电路-120]:模拟电路 - 信号处理电路 - 在信息系统众多不同的场景,“高速”的含义是不尽相同的。
  • C语言字符函数和字符串函数全解析:从使用到模拟实现
  • [硬件电路-115]:模拟电路 - 信号处理电路 - 功能放大器工作分类、工作原理、常见芯片
  • 深入 Go 底层原理(十一):Go 的反射(Reflection)机制
  • stm32是如何实现电源控制的?
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频摘要生成与智能检索优化进阶(377)
  • QT中使用OpenCV保姆级教程
  • 搜索与图论(最小生成树 二分图)
  • MyBatisPlus之核心注解与配置
  • Docker 部署与配置 MySQL 5.7
  • 位运算-371.两整数之和-力扣(LeetCode)
  • 解决 InputStream 只能读取一次问题
  • 【多模态】DPO学习笔记
  • [创业之路-528]:技术成熟度曲线如何指导创业与投资?
  • Python爬虫实战:研究mahotas库,构建图像获取及处理系统
  • 【DeepSeek-R1 】分词系统架构解析
  • 社群团购市场选择与开源技术赋能下的下沉市场开拓策略研究——以开源AI智能名片、链动2+1模式与S2B2C商城小程序为例
  • LLM Prompt与开源模型资源(3)如何写一个好的 Prompt