当前位置:首页 > React

react如何写列表

2026-01-24 11:13:38React

在React中渲染列表的方法

使用map方法遍历数组生成列表元素
React中通常通过JavaScript的map方法将数组数据转换为React元素数组。每个列表项需要包含唯一的key属性以提高渲染性能。

const items = ['Apple', 'Banana', 'Orange'];

function FruitList() {
  return (
    <ul>
      {items.map((item, index) => (
        <li key={index}>{item}</li>
      ))}
    </ul>
  );
}

处理动态数据列表

当列表数据来自API或状态管理时,需要将数据存储在组件状态中。使用useStateuseEffect钩子可以处理异步数据获取。

react如何写列表

import { useState, useEffect } from 'react';

function DynamicList() {
  const [items, setItems] = useState([]);

  useEffect(() => {
    fetch('/api/items')
      .then(res => res.json())
      .then(data => setItems(data));
  }, []);

  return (
    <ul>
      {items.map(item => (
        <li key={item.id}>{item.name}</li>
      ))}
    </ul>
  );
}

可折叠列表实现

通过状态管理控制列表项的展开/折叠状态。每个列表项可以维护自己的展开状态,或者整个列表统一控制。

react如何写列表

function CollapsibleList() {
  const [expanded, setExpanded] = useState(false);
  const items = ['Item 1', 'Item 2', 'Item 3'];

  return (
    <div>
      <button onClick={() => setExpanded(!expanded)}>
        {expanded ? 'Collapse' : 'Expand'}
      </button>
      {expanded && (
        <ul>
          {items.map((item, index) => (
            <li key={index}>{item}</li>
          ))}
        </ul>
      )}
    </div>
  );
}

带交互的列表项

为列表项添加点击事件等交互功能时,需要注意事件冒泡和性能优化。避免在渲染函数中创建新函数,使用useCallback优化事件处理。

function InteractiveList() {
  const [selected, setSelected] = useState(null);
  const items = ['Red', 'Green', 'Blue'];

  const handleClick = (item) => {
    setSelected(item);
  };

  return (
    <ul>
      {items.map(item => (
        <li 
          key={item}
          onClick={() => handleClick(item)}
          style={{ color: selected === item ? 'red' : 'black' }}
        >
          {item}
        </li>
      ))}
    </ul>
  );
}

虚拟滚动长列表优化

对于大型列表(数百/数千项),使用虚拟滚动技术(如react-window库)可以显著提高性能,只渲染可见区域的列表项。

import { FixedSizeList as List } from 'react-window';

const Row = ({ index, style }) => (
  <div style={style}>Row {index}</div>
);

function VirtualList() {
  return (
    <List
      height={300}
      itemCount={1000}
      itemSize={35}
      width={300}
    >
      {Row}
    </List>
  );
}

标签: 如何写列表
分享给朋友:

相关文章

vue公共列表的实现

vue公共列表的实现

Vue 公共列表的实现方法 在 Vue 中实现公共列表组件,可以通过封装可复用的逻辑和模板来完成。以下是几种常见的实现方式: 使用 props 和 slots 通过 props 接收列表数据,使用…

java如何写一个接口

java如何写一个接口

在Java中定义接口 接口在Java中是一种抽象类型,用于定义一组方法规范,供类实现。接口通过interface关键字声明,可以包含抽象方法、默认方法、静态方法和常量。 public interf…

h5实现展开列表

h5实现展开列表

使用HTML5和CSS实现展开列表 在HTML5中,可以通过结合CSS和JavaScript实现展开列表效果。以下是几种常见的方法: 方法1:使用details和summary标签 HTML5提供…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaS…

uniapp商品列表

uniapp商品列表

商品列表实现方法 在uniapp中实现商品列表功能,可以通过多种方式完成,以下是几种常见的方法: 使用scroll-view组件实现滚动列表 <scroll-view scroll-y="t…

h5 实现列表

h5 实现列表

列表实现方法 在HTML5中,可以通过多种方式实现列表,包括无序列表、有序列表和自定义列表。以下是具体的实现方法。 无序列表 无序列表使用<ul>标签,列表项使用<li>标签…