Open java668 opened 3 months ago
刷新本地视图 https://github.com/cgfeel/next.v2/blob/master/docs/navigation.md
刷新本地路由有以下方法:
用 a
标签代替 link
:
<Link href="/test">test</Link>
// 换成
<a href="/test">test</a>
缺点:页面有个加载抖动过程
用 hash
:
<Link href={`/test?${Date.now()}`}>test</Link>
缺点:有个 hash
小尾巴
用 Router.refresh
:
useEffect(() => {
router.refresh();
}, [router]);
用 reset
刷新 error.tsx
:
'use client' // Error components must be Client Components
import { useEffect } from 'react'
export default function Error({
error,
reset,
}: {
error: Error & { digest?: string }
reset: () => void
}) {
useEffect(() => {
// Log the error to an error reporting service
console.error(error)
}, [error])
return (
<div>
<h2>Something went wrong!</h2>
<button
onClick={
// Attempt to recover by trying to re-render the segment
() => reset()
}
>
Try again
</button>
</div>
)
}
缺点:只能用于 error.tsx
直接把 RSC 通过 server action
返回:
'use server'
function action() {
return (<div>this form server action { Data.now() }</div>);
}
客户端
'use client'
const Com = () => {
useEffect(() => {
action().then(info => { })
}, []);
};
以上 5 个方法满足你在不同场景,不同页面刷新本地视图请求。NextJS 分服务器视图和本地视图,首次访问之后全部按照 Spa
规则来:
server action
返回以上方法都需要在服务端视图更新的前提先:
dynamic
验证服务端视图也很简单,每次手动复制粘贴打开网页查看数据是否更新
大佬 你微信多少 加你沟通学习一下
Link组件导航不知道为啥不刷新视图,查询数据使用 noStore(); 清除缓存了,点击 dashboard 有时候不刷新视图