当前位置: 首页 > Web前端 > HTML

问题记录总结:项目中React和JavaScript遇到的问题记录

时间:2023-03-29 12:09:45 HTML

刚刚学习了费曼学习法,觉得有必要把项目开发中遇到的问题记录下来,然后继续丰富自己的经验。本文用于记录项目过程中遇到的问题和解决方案,进一步加深印象。问题一:JavaScript数组数据在React中Setstate后变化不渲染的问题及解决方案问题描述:如下图,基于AntDesign的Table组件进行数据渲染,同时实现移动操作单击后向上、向下和删除数据。解决方法:通过点击回调函数获取唯一标识键值,即序列号。遍历数组,判断是否为边界数据,即如果向上移动时点击的数据不是第一个,如果向下点击的数据不是最后一个,则找到该条数据,进行以下操作:被点击上移的key-1.点击的数据有key+1后,根据key值排序,实现上下移动的功能。功能实现代码如下:dealTableDataUp(text){const{tableData}=this.state;让[...tableDataChange]=tableData;for(leti=0;i0){if(text.key===tableDataChange[i].key){tableDataChange[i].key=tableDataChange}[i].key-1;tableDataChange[i-1].key=tableDataChange[i].key+1;}}}tableDataChange=this.doSrotByAttribute(tableDataChange,`key`);this.setState({tableData:tableDataChange});}dealTableDataDown(text){const{tableData}=this.state;让[...tableDataChange]=tableData;for(leti=0;i值1){返回-1;}返回0;}}arr.sort(比较(属性));返回arr;}数据变化了但没有渲染存储了首地址,数据部分的变化在堆中,所以当我们重新设置SetState时,虽然console.log()的数据发生了变化,但不会重新rendered,所以数据的变化不会显示但是非渲染问题的解决方法:对原数组进行深拷贝,使用深拷贝后的数据进行SetState。这时候,如果原来的引用地址发生变化,就会重新渲染。代码如下:const{tableData}=this.state;让[...tableDataChange]=tableData;this.setState({tableData:tableDataChange});