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

如何在ReactJS中高亮最近30秒内更新的DataTable表格行?

实现最近30秒更新行的高亮效果

要给react-data-table-component里最近30秒更新的行加高亮,核心思路是追踪每行的更新时间戳,然后动态判断并应用样式。下面是具体的实现步骤:

步骤1:确保数据包含更新时间戳

首先,你的每条数据条目需要携带一个准确的更新时间字段(比如updatedAt)。如果后端API还没返回这个字段,你可以在前端获取数据时,给每条数据手动添加当前时间戳:

// 假设你在useEffect里获取数据的代码
useEffect(() => {
  axios.get('/your-flask-api-endpoint')
    .then(res => {
      const dataWithTimestamps = res.data.map(item => ({
        ...item,
        updatedAt: Date.now() // 如果后端有返回更新时间,建议用new Date(item.updatedAt).getTime()转换为时间戳
      }));
      setData(dataWithTimestamps); // 把带时间戳的数据存入state
    });
}, []);

步骤2:添加高亮判断逻辑

在FinalResponse组件里,写一个辅助函数来判断某行是否是最近30秒内更新的:

const isRecentlyUpdated = (updatedAt) => {
  const THIRTY_SECONDS = 30 * 1000;
  return Date.now() - updatedAt < THIRTY_SECONDS;
};

步骤3:配置DataTable的行样式

利用react-data-table-component提供的rowStyle属性,它支持传入一个函数,根据每行数据动态返回样式:

import React from 'react';
import DataTable from 'react-data-table-component';

// 自定义高亮样式,也可以写到单独的CSS文件中
const highlightStyle = {
  backgroundColor: '#f0f9ff', // 淡蓝色高亮,可根据需求替换颜色
};

const FinalResponse = (props) => {
  const rows = props.data;
  const [refreshKey, setRefreshKey] = React.useState(0);

  const isRecentlyUpdated = (updatedAt) => {
    const THIRTY_SECONDS = 30 * 1000;
    return Date.now() - updatedAt < THIRTY_SECONDS;
  };

  const columns = [
    // 这里是你的列配置示例,根据实际业务调整
    {
      name: '数据名称',
      selector: row => row.name,
    },
    {
      name: '数据值',
      selector: row => row.value,
    },
    // 更多列配置...
  ];

  // 每秒刷新一次,让超过30秒的行自动取消高亮
  React.useEffect(() => {
    const interval = setInterval(() => {
      setRefreshKey(prev => prev + 1);
    }, 1000);
    return () => clearInterval(interval);
  }, []);

  return (
    <div>
      <DataTable
        key={refreshKey}
        data={rows}
        columns={columns}
        // 动态给符合条件的行加高亮样式
        rowStyle={row => isRecentlyUpdated(row.updatedAt) ? highlightStyle : {}}
      />
    </div>
  );
};

export default FinalResponse;

说明

  • 时间戳的准确性很重要:如果后端能提供每条数据的实际更新时间,优先用后端的时间,避免前端本地时间偏差导致判断错误。
  • 自动刷新逻辑:通过定时器每秒更新refreshKey,触发DataTable重渲染,确保超过30秒的行能自动移除高亮样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 17:59:05