首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React:表的高效重新呈现

React:表的高效重新呈现
EN

Stack Overflow用户
提问于 2020-12-12 06:04:55
回答 1查看 129关注 0票数 0

我有一个react + flask网站。前端创建到后端的socketio连接,之后后端定期发送数据供前端更新。数据是一个单独的字典。在每次更新时,我必须在UI中更新一个表。

下面是一个伪代码:

代码语言:javascript
复制
function Table ({data}) {
    const [dataTable, setDataTable] = useState(data);
    
    useEffect(() => {setDataTable(data)}, [data]);
    
    const createTable = () => {...};
    
    return createTable();

}

const createSocket = () => {...}

function Main() {
    const [state, setState] = useState(null);
    const socket = useRef(null);
    
    socket.current = createSocket();
    socket.current.on('state-update', (msg) => {setState(msg)});
    
    
    return <Table data={state.tableData} />
}

问题是表格只有1个单元格的变化。但我还是渲染了整个表。渲染速度足够快,但整个UI在渲染完成后变得没有响应。当我在短时间内获得20-30个单元的更新时,UI可能会在2-3秒内变得没有响应,这是很明显的。

我应该如何以一种更有效的方式来呈现表格?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-12 06:33:31

您可以将实际的"table_row“功能提取为单独的组件,并将其包装在React.memo中。因此,只有当您传递的道具发生更改时,才会重新渲染每一行。

请确保只将原始数据作为props传递,如果传入任何回调函数,请确保首先将这些函数包装在React.useCallback中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65259239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档