Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在任何Firestore条目更改后,Redux重新呈现整个表(React-Redux Firebase+;React-Virtualized)_Reactjs_Redux_React Virtualized_Reselect_React Redux Firebase - Fatal编程技术网

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}
/>
...