自定义
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>
);
}