zoukankan      html  css  js  c++  java
  • document.body.removeChild 获取到 symbol 标签

    在做全局loading时,出现的问题,使用 antd-mobile 中 Icon 组件,导致 loading组件无法关闭的问题,

    loading.jsx

    import React from 'react';
    import ReactDOM from 'react-dom';
    import { Icon } from 'antd-mobile';
    import './style.less';
    
    class Loading {
      static animating = false
      open () {
        Loading.animating = document.getElementById('loading')
        if (Loading.animating) return;
        const dom = document.createElement('div')
        dom.setAttribute('id', 'loading')
        document.body.appendChild(dom)
        ReactDOM.render(
          <div className='load' id='load'>
            <Icon type='loading' />
          </div>, dom
        )
      }
      close () {
        console.log(document.getElementById('loading'))
        document.body.removeChild(document.getElementById('loading'))
      }
    }
    
    export default new Loading();

    调用顺序

    Loading.open()

    setTimeout(() => {

     Loading.close()

    }, 1000);

    打印出的信息

    出现 问题:

    Loading.close() 方法执行时,无法清除元素,即  document.body.removeChild(document.getElementById('loading'))  方法无效
     
     
     
    解决
    由 Icon 组件 改为  ActivityIndicator 组件, console.log(document.getElementById('loading'));  即可获得到 正常 的 div元素,即 可通过removeChild  清除
    import React from 'react';
    import ReactDOM from 'react-dom';
    import { ActivityIndicator } from 'antd-mobile';
    import './style.less';
    
    class Loading {
      static animating = false
      open () {
        Loading.animating = document.getElementById('loading')
        if (Loading.animating) return;
        const dom = document.createElement('div')
        dom.setAttribute('id', 'loading')
        document.body.appendChild(dom)
        ReactDOM.render(
          <div className='load' id='load'>
            <ActivityIndicator size="large" />
          </div>, dom
        )
      }
      close () {
        const ld = document.getElementById('loading')
          if (ld) {
            document.body.removeChild(ld)
          }
      }
    }
    
    export default new Loading();
    原因
    Icon 组件实际为一个 SVG 标签,所以会获取到 symbol 标签
  • 相关阅读:
    数组从文件中读取(接上问题)
    符合json格式要求的字符串转化为json字符串
    json-lib --->入门
    XStream-->别名;元素转属性;去除集合属性(剥皮);忽略不需要元素
    Ajax案例5-->省市联动
    Ajax案例4-->接收后台传递的XML数据
    Ajax案例3-->判断用户名是否被占用
    Ajax案例2-->POST请求
    Ajax案例1-->GET请求
    SecureCRT连接VMWare中的linux系统相关配置
  • 原文地址:https://www.cnblogs.com/-roc/p/15070385.html
Copyright © 2011-2022 走看看