自定义
next提供的head是怎么用的:
/page/index.js

使用一次head
import React, {useCallback} from 'react';import Link from 'next/link'import Head from 'next/head';export default function x() {const clickMe = useCallback(()=>{console.log('you click me');},[])return (<><div>First Post<Head><title>我的第一篇文章</title></Head><button onClick={clickMe}>click me</button><Link href="/"><a>点击这里</a></Link></div></>);}
效果:

全局自定义head
/pages/_app.js
import '../styles/globals.css';import Head from 'next/head';function MyApp({Component, pageProps}) {return <div className="hasson"><Head><title>我的博客 - Hasson</title><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"/></Head><Component {...pageProps} /></div>;}export default MyApp;

_app.js是所有页面的根组件,可以看到在id为’_next’的div之后的第一个div的className是’hasson’,这个是我们在myApp里面设置的。
由此可以得出,_app.js的这个组件,是可以影响所有组件的。所以在这里加上一个统一的head和meta viewport,是可以全局作用于所有页面的。
所以,如果有需要全局配置的文件,是可以在_app.js这个文件里面写的。
全局配置
- pages/_app.js
- export default function App 是每个页面的根组件
- 页面切换时App不会销毁,App里面的所有组件销毁
- 可用App保存全局状态
- 注意
- 创建_app.js之后需要重启 yarn dev
全局CSS
- 放在_app.js里
- import ‘../styles/global.css’
- 因为切页面时App不会销毁
- 其他地方不能import globa.css
- 其他地方只能写局部CSS
局部css
export default function Home() {return (<div><h1>标题</h1><p>段落</p><style jsx>{`h1 {color: red;}`}</style></div>);}

