2022 React 最速上手指南(三)—— 渲染列表 & 提取组件

简介: 2022 React 最速上手指南(三)—— 渲染列表 & 提取组件

以结果为导向,写给刚学完前端三剑客和想要了解 React 框架的小伙伴,使得他们能快速上手(省略了历史以及一些不必要的介绍)。



渲染列表


我们已经渲染了一些原始变量,接下来我们将渲染项目列表,我们先用示例数据进行实验,然后将其应用于从远程 API 获取数据,定义变量:


const list = [
  {
    title: 'React',
    url: 'https://reactjs.org/',
    author: 'Jordan Walke',
    objectID: 0,
  },
  {
    title: 'Redux',
    url: 'https://redux.js.org/',
    author: 'Dan Abramov, Andrew Clark',
    objectID: 1,
  },
];
function App() {
  return (
    <div>
      <h1>Hello React</h1>
      <label htmlFor="search">Search: </label>
      <input type="text" id="search"/>
      <hr/>
      {/*在这里渲染列表*/}
    </div>
  );
}
export default App;
复制代码


我们使用数组内置的 map() 遍历列表里的每个项目并返回每个项目的 JSX 片段:

  • 举个例子:


const numbers = [1, 2, 3, 4, 5];
const newNumbers = numbers.map(function(number) {
  return number * 2; 
});
console.log(newNumbers);
// [2, 4, 6, 8, 10]
复制代码
  • 实际应用:


...
function App() {
  return (
    <div>
      ...
      <hr />
      <ul>
        {list.map(function (item) {
          return (
            <li key={item.objectID}>
              <span>
                <a href={item.url}>{item.title}</a>
              </span>
              <span>{item.author}</span>
            </li>
          );
        })}
      </ul>
    </div>
  );
}
export default App;
复制代码


通过为每个列表项的元素分配 key 属性,React 可以在列表发生更改(例如重新排序)时识别已修改的项目。


在 React 中,你必须为每个列表项指定一个唯一标识,也就是 key 属性,否则会报错,具体可以查看文档


提取组件


为了提高项目的扩展性以及可复用性,React 中有几个关键点:


  • 在 React 应用中,每一块 UI 都应该是一个组件
  • React 组件是常规的 JS 函数,但它们的名字都是以大写字母开头,且返回 JSX 代码

所以我们可以将 App 组件中的这部分职责分解成一个独立的 List 组件:


function List() {
  return (
    <ul>
      {list.map(function (item) {
        return (
          <li key={item.objectID}>
            <span>
              <a href={item.url}>{item.title}</a>
            </span>
            <span>{item.author}</span>
          </li>
        );
      })}
    </ul>
  );
}
复制代码


然后就可以在 App 组件中使用 List 组件了:


function App() {
  return (
    <div>
      <h1>Hello React</h1>
      <label htmlFor="search">Search: </label>
      <input type="text" id="search" />
      <hr />
      {/* 创建一个 List 组件实例 */}
      <List />
      {/* 创建另一个 List 组件实例 */}
      <List />
    </div>
  );
}
export default App;
复制代码


一旦我们定义了组件,我们就可以在 JSX 的任何地方像使用 HTML 元素一样使用它,就像 JS 类的定义一样,你可以根据需要创建任意数量的组件示例


因为 List 组件在 App 中渲染,我们可以说 App 是一个父组件,每个 List 都是一个子组件。大一点的 React 应用都会有一个组件树,也可以说是组件层次结构。


在组件树中,App 是根组件,它可以有多个子组件,List 也是,如果 App 组件有其他子组件,那这个子组件可以称为 List 组件的兄弟组件。


image.png

专栏


因为参加打卡活动是每日更新,所以可能比较短小,可以关注一下 React 入门专栏

在更新完后会整合为一整篇,感谢关注和点赞!

目录
相关文章
|
23天前
|
存储 前端开发 索引
REACT 在组件之间共享状态
REACT 在组件之间共享状态
|
16天前
|
存储 前端开发 JavaScript
React中有效地使用props和state来管理组件的数据和行为
React中有效地使用props和state来管理组件的数据和行为
|
30天前
|
前端开发 JavaScript 开发者
在React中,如何利用生命周期方法管理组件的状态和行为?
【5月更文挑战第29天】在React中,如何利用生命周期方法管理组件的状态和行为?
24 3
|
8天前
|
缓存 前端开发 JavaScript
如何对 React 函数式组件进行优化
如何对 React 函数式组件进行优化
|
1月前
|
前端开发 JavaScript 算法
React渲染流程
应用的性能和灵活性,以后可以具体看一 Fiber 的工作原理。
22 3
|
23天前
|
前端开发 JavaScript
REACT 条件渲染
REACT 条件渲染
|
1月前
|
存储 前端开发 JavaScript
在回调函数中重新渲染React组件
在React中,重新渲染组件可通过`forceUpdate()`或`ReactDOM.render()`实现。方法一是使用`forceUpdate`强制无状态组件更新;方法二是通过重新创建根组件实例适用于有状态组件。这些示例基于Webpack和Babel的模块热替换配置。根据项目需求和React版本,还可以结合React-Router或Redux等库选择合适的方法。
|
1月前
|
存储 JavaScript 前端开发
基于React和Redux的待办事项列表应用
基于React和Redux的待办事项列表应用
33 0
|
1月前
|
存储 前端开发
构建一个简单的React待办事项列表应用
构建一个简单的React待办事项列表应用
27 0
|
1月前
|
存储 JSON 资源调度
next.js博客搭建_react-markdown渲染内容(第三步)
next.js博客搭建_react-markdown渲染内容(第三步)
16 1