
Thinking in React – React
The library for web and native user interfaces
© 2024-2025 Choneas. All rights reserved.
This work is licensed under a CC BY-NC-SA 4.0 License

Posted at Jan 24 · Edited at May 24
React 和Next.js 还有Typescript 这几个技术栈,可以说是在我对 Web 探索的道路上一个不可或缺的里程碑。<div> 是多么神奇,所以我就用它和最基本的 .html 文件编写了一个自己第一个在 Github Pages 上的网站。但是在不同页面中,例如有一个主页和一个关于页,这里有一个最头疼的问题,来举一个例子。Home页面和一个 About页面 ,它们都有一个导航栏,导航栏上的链接都指向了另一个页面,就像这样:

Download ,现在,我把Home 复制一下,作为这个新的Download页。
Download 页,该怎么做呢?你可能马上想到 “每一个页面都加上访问到Download的链接呗!” 嗯,当初我也是这么想的。
Download 页面,让我们来回顾一下步骤Home 页面,作为Download 页面的模板Home 页面的导航栏,添加指向Download 页的链接About 页面的导航栏,添加指向Download 页的链接Download 页面的导航栏,添加指向About 页的链接
for 循环一个数组,数组里包含链接不就好了吗?“ 的确,这是最能想到的办法,但在 React 的核心设计思想中,更强烈推荐的是map函数。interface 定义一个链接的属性,每一个链接就是一个object(对象) ,具有名称和链接地址,然后我们再创建一个数组,每一项都是一个object(对象) 。map进行展示即可。下面就是我们的流程。
map遍历数据展示出来的。JSX 语法表示html中的标签(DOM)。{} 括起来的数据就是表达式,比如navbarLinks.map() 就是一个表达式,再例如这个map 函数获得到每个链接(link)的href ,name 都是一个表达式。而for不是。这便体现了声明式编程。key属性,不论数据怎么变化,它就可以从每个DOM中的key 来辨认是新朋友还是老伙计,而不是再次遍历所有数据。html,我们还可以通过文件夹的方式表示页面父子关系。此外,每一个页面都具有一个 layout 组件,相当于这个 page 的样式,比如为其设置标题、字体等。在其官方文档中是这样展示的。

download和about文件夹,并且在两个文件夹里面加上page.tsx ,这样就实现了我们当初的愿望:在每一个页面显示 Navbar,并且当有更改时不必修改每一个页面。就像你现在看到 Choneas 的个人网站上有一个始终在页面顶端的导航栏,和这个文章的标题。
Thinking in React – React
The library for web and native user interfaces
Getting Started: Layouts and Pages
Create your first pages and layouts, and link between them.

深入理解虚拟DOM:原理、优势与实践-阿里云开发者社区
深入理解虚拟DOM:原理、优势与实践