react hooks & props change & pagination current bug
react hooks & props change & pagination current bug
multi tables & pigination bug & current update
just listen to the props' unique value change, then update your local state!
import React, {
useState,
useEffect,
} from 'react';
import ExportableTable from '@/components/ExportableTable';
import { generateFilename } from '@/utils/exportUtils';
const TrendTable = ({
startDate,
endDate,
dataSource,
moduleName,
analysisName,
units,
initCurrent,
}) => {
const [current, setCurrent] = useState(initCurrent);
const [tableName, setTableName] = useState(analysisName);
// const [unmounted, setUnmounted] = useState(false);
useEffect(() => {
console.log(`did mount`);
// props change
if(tableName !== analysisName) {
console.log(`tableName`, tableName, analysisName);
setCurrent(1);
setTableName(analysisName);
}
let unmounted = false;
if(!unmounted) {
// cancel update state
}
return () => unmounted = true;
}, [analysisName, tableName]);
const columns = [
{
title: 'date',
dataIndex: 'date',
key: 'date',
align: 'center',
width: 150,
},
{
title: analysisName,
dataIndex: 'value',
key: 'value',
align: 'center',
render: text => `${text} ${units}`,
width: 150,
},
];
const total = dataSource ? dataSource.length : 0;
console.log(`total`, total, current);
const filename = generateFilename({
moduleName,
analysisName,
startDate,
endDate,
});
return (
<ExportableTable
filename={filename}
size="small"
bordered={false}
rowKey="name"
columns={columns}
pagination={{
current,
pageSize: 10,
showSizeChanger: true,
pageSizeOptions: ['5', '10', '20'],
showQuickJumper: true,
showTotal: total => <span>{total} items</span>,
}}
dataSource={dataSource}
defaultCurrent={1}
onChange={(p) => {
setCurrent(p.current);
}}
/>
);
};
export {
TrendTable,
};
export default TrendTable;
solution
https://github.com/facebook/react/issues/14830#issuecomment-550211522
import React, {
useState,
useEffect,
} from 'react';
import ExportableTable from '@/components/ExportableTable';
import { generateFilename } from '@/utils/exportUtils';
const TrendTable = ({
startDate,
endDate,
dataSource,
moduleName,
analysisName,
units,
initCurrent,
}) => {
const [current, setCurrent] = useState(initCurrent);
const [tableName, setTableName] = useState(analysisName);
useEffect(() => {
let unmounted = false;
if(!unmounted) {
if(tableName !== analysisName) {
setCurrent(1);
setTableName(analysisName);
}
}
return () => unmounted = true;
}, [analysisName, tableName]);
const columns = [
{
title: '日期',
dataIndex: 'date',
key: 'date',
align: 'center',
width: 150,
},
{
title: analysisName,
dataIndex: 'value',
key: 'value',
align: 'center',
render: text => `${text} ${units}`,
width: 150,
},
];
const total = dataSource ? dataSource.length : 0;
console.log(`total`, total, current);
const filename = generateFilename({
moduleName,
analysisName,
startDate,
endDate,
});
return (
<ExportableTable
filename={filename}
size="small"
bordered={false}
rowKey="name"
columns={columns}
pagination={{
current,
pageSize: 10,
showSizeChanger: true,
pageSizeOptions: ['5', '10', '20'],
showQuickJumper: true,
showTotal: total => <span>共 {total} 条记录</span>,
}}
dataSource={dataSource}
defaultCurrent={1}
onChange={(p) => {
setCurrent(p.current);
}}
/>
);
};
export {
TrendTable,
};
export default TrendTable;

react hooks & props change & pagination current bug的更多相关文章
- react hooks & component will unmount & useEffect & clear up
react hooks & component will unmount & useEffect & clear up useEffect & return === u ...
- React Hooks 深入系列 —— 设计模式
本文是 React Hooks 深入系列的后续.此篇详细介绍了 Hooks 相对 class 的优势所在, 并介绍了相关 api 的设计思想, 同时对 Hooks 如何对齐 class 的生命周期钩子 ...
- React Hooks 实现和由来以及解决的问题
与React类组件相比,React函数式组件究竟有何不同? 一般的回答都是: 类组件比函数式组件多了更多的特性,比如 state,那如果有 Hooks 之后呢? 函数组件性能比类组件好,但是在现代浏览 ...
- React Hooks总结
Hook 前言 什么是Hook 自从 16.8 版本开始,hooks 的出现使得你可以在不编写 class 的情况下使用状态管理以及其它 React 的特性. 那么在 React Hooks 出现之前 ...
- [React Hooks长文总结系列一]初出茅庐,状态与副作用
写在开头 React Hooks在我的上一个项目中得到了充分的使用,对于这个项目来说,我们跳过传统的类组件直接过渡到函数组件,确实是一个不小的挑战.在项目开发过程中也发现项目中的其他小伙伴(包括我自己 ...
- 谈谈react hooks的优缺点
前言Hook 是 React 16.8 的新增特性.它是完全可选的,并且100%向后兼容.它可以让你使用函数组件的方式,运用类组件以及 react 其他的一些特性,比如管理状态.生命周期钩子等.从概念 ...
- react之react Hooks
函数组件,没有 class 组件中的 componentDidMount.componentDidUpdate 等生命周期方法,也没有 State,但这些可以通过 React Hook 实现. Rea ...
- 你真的会用react hooks?看看eslint警告吧!(如何发请求、提升代码性能等问题)
前言 看过几个react hooks 的项目,控制台上几百条警告,大多是语法不规范,react hooks 使用有风险,也有项目直接没开eslint.当然,这些项目肯定跑起来了,因为react自身或者 ...
- 关于React Hooks,你不得不知的事
React Hooks是React 16.8发布以来最吸引人的特性之一.在开始介绍React Hooks之前,让咱们先来理解一下什么是hooks.wikipedia是这样给hook下定义的: In c ...
随机推荐
- loj10173
炮兵阵地 司令部的将军们打算在 N×M 的网格地图上部署他们的炮兵部队.一个 N×M的地图由 N 行 M 列组成,地图的每一格可能是山地(用 H 表示),也可能是平原(用 P表示),如下图.在每一格平 ...
- Result Maps collection already contains value for xxxMapper.BaseResultMap错误解决办法
原因分析: 这些代码因为是工具自动生成的,所以也没仔细检查.一个小小的错误,导致的. 解决办法: 1.由于使用ibatis的TempTestTableMapper.xml实现接口TempTestTab ...
- python基础学习2 函数变量与赋值
学习的第一步,就是通常的输出函数:print() 1.基础主要学习了变量的赋值,变量名可以疑字母.数字.下划线(_)进行命名,但是不能以数字开头 变量的赋值:变量名 = 变量值 2.模块的导入,和调用 ...
- 并发编程(Process对象的join方法)(
一. Process对象的join方法 在主进程运行过程中如果想并发地执行其他的任务,我们可以开启子进程,此时主进程的任务与子进程的任务分两种情况 情况一:在主进程的任务与子进程的任务彼此独立的情况下 ...
- 36.Samba 文件共享服务1--安装及配置参数解释
1.Samba 服务程序现在已经成为在Linux 系统与Windows系统之间共享文件的最佳选择. 1)安装: [root@localhost ~]#yum install samba Loaded ...
- arp病毒系列——攻击类型
到目前为止,我所见闻的arp病毒攻击导致局域网几乎瘫痪的事例已经不下3次了,而且非常巧的是:每次都是将近学校考试.大批同学新下四楼更新IP-Mac的时候出现!严重的时候你根本就ping不通网关 ...
- 数理统计4:均匀分布的参数估计,次序统计量的分布,Beta分布
接下来我们就对除了正态分布以外的常用参数分布族进行参数估计,具体对连续型分布有指数分布.均匀分布,对离散型分布有二项分布.泊松分布几何分布. 今天的主要内容是均匀分布的参数估计,内容比较简单,读者应尝 ...
- cassandra权威指南读书笔记--读写数据
写cassandra除了轻量级事务,不支持别的事务.cassandra是追加写,写的速度非常快.cassandra还有hint日志,这个数据库总是可写的,而且单个列的写操作是原子的.hint并不是一定 ...
- JVM之堆体系结构
1.Heap堆(Java7之前) 一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的.类加载器读取了类文件后,需要把类.方法.常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行,堆 ...
- 使用 requests.post 方法抓取有道翻译结果
import requests as rq import json def get_translate(word=None): url = 'http://fanyi.youdao.com/trans ...