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 入门专栏

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

目录
打赏
0
0
0
0
7
分享
相关文章
React 音频播放器组件 Audio Player
本文介绍如何使用React创建音频播放器组件,涵盖核心功能如播放/暂停、进度条、音量控制和时间显示。通过HTML5 `&lt;audio&gt;` 元素和React的声明式状态管理,实现交互式音频播放。常见问题包括控件不响应、进度条无法更新和音量控制失灵,并提供解决方案。此外,还讨论了浏览器兼容性、异步错误处理和性能优化等易错点及避免方法。
378 123
除了使用Route组件,React Router还有其他方式处理404错误页面吗
除了使用Route组件,React Router还有其他方式处理404错误页面吗
91 58
React 中高阶组件的原理是什么?
React 中高阶组件的原理是什么?
103 57
除了函数组件和类组件,React 还有其他创建组件的方式吗?
除了函数组件和类组件,React 还有其他创建组件的方式吗?
89 57
如何在React Router中定义404错误页面组件?
如何在React Router中定义404错误页面组件?
85 57
在 React 中使用高阶组件时,如何避免命名冲突?
在 React 中使用高阶组件时,如何避免命名冲突?
96 56
React音频播放列表组件:常见问题、易错点与解决方案
本文介绍了在React中实现音频播放列表时常见的挑战及解决方案。通过基础实现、常见问题分析和最佳实践,帮助开发者避免状态管理、生命周期控制和事件处理中的陷阱。关键点包括使用`useRef`操作音频元素、`useState`同步播放状态、全局状态管理防止多音频同时播放、以及通过`useEffect`清理资源。还提供了代码示例和跨浏览器兼容性处理方法,确保高效实现功能并减少调试时间。
107 30
React 图片组件样式自定义:常见问题与解决方案
在 React 开发中,图片组件的样式自定义常因细节问题导致布局错乱、性能损耗或交互异常。本文系统梳理常见问题及解决方案,涵盖基础样式应用、响应式设计、加载状态与性能优化等,结合代码案例帮助开发者高效实现图片组件的样式控制。重点解决图片尺寸不匹配、边框阴影不一致、移动端显示模糊、加载失败处理及懒加载等问题,并总结易错点和最佳实践,助力开发者提升开发效率和用户体验。
77 22
React 音频音量控制组件 Audio Volume Control
在现代Web应用中,音频播放功能不可或缺。React以其声明式编程和组件化开发模式,非常适合构建复杂的音频音量控制组件。本文介绍了如何使用HTML5 `&lt;audio&gt;`元素与React结合,实现直观的音量控制系统,并解决了常见问题如音量范围不合理、初始音量设置及性能优化等,帮助开发者打造优秀的音频播放器。
88 27
React音频播放列表组件开发实战:常见问题与避坑指南
本文介绍了构建React音频播放列表组件的核心架构与常见问题解决方案。通过管理播放状态、列表索引和音频进度,结合异步控制、状态清理、节流优化等技术,确保流畅的用户体验。针对移动端兼容性、内存泄漏、列表渲染性能等问题提供了具体修复方案,并分享了自定义Hook封装、可视化音频波形等进阶实践。最后,总结了性能优化法则和测试关键点,帮助开发者打造生产级可靠的音频播放组件。
82 18
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等