可以使用 map 函数来遍历生成 5 个 div 块,并给每个 div 设置不同的颜色和 overflow-y 属性。然后,通过添加事件监听器来控制只有当前滑动的 div 具有滚动效果,其他 div 则禁止滚动。

首先,创建一个 React 组件,将 5 个 div 块渲染出来:

import React, { useState } from 'react';

const DivBlocks = () => {
  const [activeIndex, setActiveIndex] = useState(-1);

  const colors = ['red', 'blue', 'green', 'yellow', 'orange'];

  const handleScroll = (index) => {
    setActiveIndex(index);
  };

  return (
    <div>
      {colors.map((color, index) => (
        <div
          key={index}
          style={{
            background: color,
            overflowY: activeIndex === index ? 'scroll' : 'hidden',
          }}
          onScroll={() => handleScroll(index)}
        >
          {index + 1}
        </div>
      ))}
    </div>
  );
};

export default DivBlocks;

上述代码中,我们使用 useState 钩子来保存当前活动的 div 的索引 activeIndex,默认为 -1 表示无活动状态。

colors.map 中,我们使用 index 作为 key 来遍历生成 5 个 div 块。根据 activeIndex 是否等于当前索引,来设置不同的 overflow-y 属性。同时,给每个 div 添加 onScroll 事件监听器,当滑动时,调用 handleScroll 函数。

handleScroll 函数用于更新 activeIndex,当滑动某个 div 时,将该 div 的索引设置为 activeIndex,其他 div 则不会有滑动效果。

最后,将 DivBlocks 组件渲染到你的应用中:

import React from 'react';
import DivBlocks from './DivBlocks';

const App = () => {
  return (
    <div>
      <h1>Div Blocks</h1>
      <DivBlocks />
    </div>
  );
};

export default App;

这样,你就可以在浏览器中看到 5 个不同颜色的 div 块,并且只有当前滑动的 div 具有滚动效果,其他 div 则不会滚动。

React 遍历生成 5 个不同颜色可滚动 div 块,仅当前 div 可滑动

原文地址: https://www.cveoy.top/t/topic/qnxp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录