在列中呈现自定义组件时,如何使DetailsList更具性能?

时间:2020-02-28 16:22:20

标签: reactjs office-ui-fabric office-ui-fabric-react

我正在尝试渲染一个不太大的const existsTatuador = (db, tatuador) =>{ return new Promise((resolve, reject)=>{ tatuadorDB.findTatuador(db, docs => { for (let element of docs) { if (element.correo == tatuador.correo) { reject(Error("lo logro, el hijo de puta lo logro")); return; } } resolve(); }); }); } router.post('/', function(req, res, next){ mongo.getDatabase(db => { // this next line shows a fix to how the function is passed to .then() tatuadorLogic.existsTatuador(db, req.body).then(() => { tatuadorDB.insertTatuador(db, data => { console.log("Inicia el proceso para crear el tatuador :" ); console.log(req.body); res.send(req.body); }, req.body); }).catch((err)=> { console.log(err); res.status(500).send(err); }); }); }); (在100-200行之间),其中有一个包含DetailsList组件的自定义列。这些动作之一是删除动作,它删除行本身。我面临的问题是,单击删除行后,代码将花费更多的时间,而我希望重新渲染该代码,这会产生系统运行缓慢的感觉。

在dev中运行时,我得到了相当慢的性能,这是非常令人不愉快的。 (我的机器是具有16GbRam的i7,因此问题不应该出在我的机器上。)

虽然我的表现不错,但仍在生产中运行。

代码示例:https://codepen.io/pedro-beslogic/pen/eYNWLLo

我已经评论了CommandBar行,以举例说明我认为的出色表现

反应探查器文件https://beslogic-my.sharepoint.com/:u:/p/pedro_ferreira/EQ-P0K6-uYZFqhPNIcMtbmsBNWU6CUXrQjuexCPhPkibpQ?e=JMjnoa

Chrome浏览器性能文件https://beslogic-my.sharepoint.com/:u:/p/pedro_ferreira/EbogBtQwPWVCpwCrIIFfAdYBsOX1BlYB0cOWl7Zy1KwanA?e=Z53Qyi

我在做错什么吗?还是使表格更具性能的更好方法?

1 个答案:

答案 0 :(得分:0)

在他们的gitHub上打开issue后,我得到了答案。 代替使用CommandBar内的DetailList组件,我们可以将IconButton组件与道具menuProps一起使用。