
Thinking in React – React
The library for web and native user interfaces
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:原理、优势与实践