Reactjs 在任何Firestore条目更改后,Redux重新呈现整个表(React-Redux Firebase+;React-Virtualized)
我正在使用Reactjs 在任何Firestore条目更改后,Redux重新呈现整个表(React-Redux Firebase+;React-Virtualized),reactjs,redux,react-virtualized,reselect,react-redux-firebase,Reactjs,Redux,React Virtualized,Reselect,React Redux Firebase,我正在使用react redux firebase与reselect和react virtualized来尝试显示一个500项列表,其中的条目将在后台更改、添加或删除 每次firebase上的单个条目发生更改时,“我的表”功能组件都会从redux检索所有500条记录,然后重新呈现整个表,而不是被更改的特定行 本来希望使用reselect和react virtualized可以解决这个问题,唉,我现在想知道这是不是因为我在我的一些专栏中使用了ternary,还是有其他问题 如果没有关于表/行调整的
react redux firebase
与reselect
和react virtualized
来尝试显示一个500项列表,其中的条目将在后台更改、添加或删除
每次firebase上的单个条目发生更改时,“我的表”功能组件都会从redux检索所有500条记录,然后重新呈现整个表,而不是被更改的特定行
本来希望使用reselect
和react virtualized
可以解决这个问题,唉,我现在想知道这是不是因为我在我的一些专栏中使用了ternary,还是有其他问题
如果没有关于表/行调整的解决方案,是否可以取消/限制来自useFireStoreConnect
或useSelector
的更新,因此我最多只能每2/3秒更新一次表
const itemsSelector: any = createSelector(
(state: any) => state.firestore.ordered.items,
items => items
);
const ItemsTable: React.FC = React.memo(() => {
useFirestoreConnect('items');
const items: any = useSelector((state: any) => itemsSelector(state));
console.log(items) // 500~ firestore items, called every time there's a change to one entry
...
// The entire table is being re-rendered every time a single firebase entry that's been synced to redux is changed
return (
<AutoSizer>
{({ height, width }) => (
<Table
width={width}
height={height}
headerHeight={48}
rowHeight={48}
rowCount={items.length}
rowGetter={({ index }) => items[index]}
>
<Column
label="Status"
dataKey="status.name"
cellRenderer={({ rowData }) =>
rowData.status ? rowData.status.name : '-'
}
width={100}
/>
...
const itemsSelector:any=createSelector(
(state:any)=>state.firestore.ordered.items,
项目=>项目
);
常量ItemsTable:React.FC=React.memo(()=>{
使用FireStoreConnect(“项目”);
const items:any=useSelector((state:any)=>itemselector(state));
console.log(items)//500~firestore items,每次更改一个条目时调用
...
//每次更改已同步到redux的单个firebase条目时,都会重新呈现整个表
返回(
{({高度,宽度})=>(
项目[索引]}
>
rowData.status?rowData.status.name:'-'
}
宽度={100}
/>
...