[Next.js]Layout和Template的区别

首先

我总结了一下Layout和Template的区别。

巨大的区别 de

在画面切换时,有两个主要的区别,一个是布局(Layout)不会被重新渲染,而模板(Template)会被重新渲染。

去实际验证一下

我想动手写代码来验证一下。
我准备了以下的代码。

"use client";

import React, { useEffect } from "react";

export default function Layout({ children }: { children: React.ReactNode }) {
  useEffect(() => {
    console.log("Layoutレンダリング");
  }, []);
  return (
    <div>
      <h2>Layout Header</h2>
      {children}
    </div>
  );
}

"use client";

import React, { useEffect } from "react";

export default function Template({ children }: { children: React.ReactNode }) {
  useEffect(() => {
    console.log("Templateレンダリング");
  }, []);
  return (
    <div>
      <h2>Template Header</h2>
      {children}
    </div>
  );
}


スクリーンショット 2023-12-02 10.48.34.png

打开画面时,可以看到两者都已经渲染出来。
然后,准备以下的代码。

"use client";

import Link from "next/link";

export default function Page({ params }: { params: { slug: string } }) {
  return (
    <>
      <div>dashboard: {params.slug}</div>
      <Link href={`/dashboard/${Number(params.slug) + 1}`}>Go to next page</Link>
    </>
  );
}

スクリーンショット 2023-12-02 10.52.47.png
スクリーンショット 2023-12-02 10.52.18.png
スクリーンショット 2023-12-02 10.55.01.png
スクリーンショット 2023-12-02 10.54.07.png

# 感想
从性能优化的角度来看,我认为在大多数情况下,使用Layout是最好的选择。
然而,举个例子,在页面切换时,如果想要添加某种事件(例如动画),我觉得使用Template也是可以的。

最终
最后

因为我还写了其他各种各样的文章,如果您愿意的话,请阅读一下…

 

广告
将在 10 秒后关闭
bannerAds