You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一位置带过渡效果轮流展示三个Typography组件的文本

多文本循环切换实现方案

核心思路是用状态记录当前展示的文本序号,定时器定期更新序号,条件渲染对应文本,天然满足同位置仅显示一个的要求。

  • 先通过useState存储当前激活的文本索引,初始值为0对应第一个文本
  • 用useEffect启动定时器,固定间隔更新索引,通过取余逻辑实现循环效果
  • 组件卸载时清除定时器,避免内存泄漏

完整实现代码如下:

import { useState, useEffect } from 'react';
// 按你实际用的Typography组件来源导入即可,这里以MUI为例
import Typography from '@mui/material/Typography';

const CycleText = () => {
  const [currentIdx, setCurrentIdx] = useState(0);
  const totalCount = 3;

  useEffect(() => {
    // 切换间隔单位为毫秒,这里设的2秒,可自行调整
    const timer = setInterval(() => {
      setCurrentIdx(prev => (prev + 1) % totalCount);
    }, 2000);
    return () => clearInterval(timer);
  }, [totalCount]);

  return (
    <div>
      {currentIdx === 0 && <Typography>Welcome.</Typography>}
      {currentIdx === 1 && <Typography>Willkommen.</Typography>}
      {currentIdx === 2 && <Typography>Bem-vindo.</Typography>}
    </div>
  );
};

export default CycleText;

用取余%处理循环逻辑,后续如果要新增文本,只要修改totalCount的值、新增对应条件渲染的组件即可,无需修改切换逻辑。如果想要加淡入淡出的过渡效果,给外层div加opacity相关的CSS过渡即可,不用调整核心逻辑。

内容的提问来源于stack exchange,提问作者Bender

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:24:04