美文网首页
react列表展示的优化

react列表展示的优化

作者: 雨落倾城夏微凉_e861 | 来源:发表于2020-09-09 10:39 被阅读0次

    项目开发完成后除了改bug外,还要考虑一些细节的优化点,考虑哪些行为对用户是不友好的.在之前开发完成的那个react项目中找个小例子说明一下.

    在之前开发的项目中有很多列表展示的数据,但是如果没数据要展示ui给定的设计,也就是一些图片文案什么的.鉴于要多地方使用所以将为空的状态单独写一个组件,图片地址和文案动态传入.

    先来说说会出现的情况因为数据是异步请求的,刚开始我是通过数据的长度是否为0来判断是否展示空组件,但是数据请求需要一定的时间,那么就会出现用户进入页面后空组件会一闪而过,这样对于用户在视觉上的体验肯定是不友好的.

    因此我采取的方法是定义一个状态,默认值设为false,当请求成功时状态设为true.当状态为true并且数据长度为0时才展示空组件.但是这样会引来另一个问题,那就是刚开始页面会出现短暂空白然后展示空组件或者数据列表.当然这个可以根据产品要求可以加一些loading动画什么的.

    let [newList, setCount] = useState({//需要获取的数据
        pageNum: 1,
        pageSize: 10,
        total: 0,
        list: []
      });
    let [pageMain, setPagemain] = useState(false);//设置数据是否请求成功的状态
    
      let initTask = pageNum => {
        getTaskNum(0, pageNum, newList.pageSize).then(res => {//数据请求方法
          if (res.msg == "success") {
            setCount({ ...res.data, pageNum });
            if (!pageMain) {//如果状态是false的话那就设置为true
              setPagemain(true);
            }
          }
        });
      };
    
      useEffect(() => {//调用数据请求方法
        initTask(newList.pageNum);
      }, []);
    
    return (
        <Layout>
          <Antspin ishide={pageMain ? "none" : "block"}>//根据设置的状态判断loading是否显示隐藏
            <Spin size="large" spinning={!pageMain}></Spin>
          </Antspin>
    
          {pageMain && newList.list.length == 0 ? (//如果状态为true并且数据长度为0展示空组件
            <MangeVoid voidText="没有新的分配项目呦,耐心等等吧。"></MangeVoid>
          ) : (
            newList.list.map((item, index) => (
              <ManageNewTask key={index}> </ManageNewTask>
            ))
          )}
        </Layout>
      );
    

    这样就可以让用户体验更友好一些.

    相关文章

      网友评论

          本文标题:react列表展示的优化

          本文链接:https://www.haomeiwen.com/subject/juxeektx.html