• #第一次使用Vue使用过程中遇到的一些小坑


    第一次使用Vue使用过程中遇到的一些小坑

    后端返回Long 类型ID精度丢失

    产生原因:后端通过雪花算法生成ID 返回给前端 后端返回long型数据,但是前端展示时数据不一致。比如,后端返回的数据是1475797674679549851,但前端显示出来却成了1475797674679550000,后面几位全变成了0,精度丢失了。

    原因:

    Java long类型的的数字超出了Javascript的处理范围;

    解决办法

    后端将long类型数据转为字符串返回给前端;
    第一种
    加注解:ize(using = ToStringSerializer.class)
    第二种:
    配置文件全局更改:spring.jackson.generator.write-numbers-as-strings=true

    vue方法种的执行顺序问题 导致我想要的页面效果没有出现

    原因 VUE中的方法调用顺序是依次进行的,方法体内部也是依次执行的,但是,两个方法体的执行顺序并不能严格控制。

    以下方法中都带有promise函数或异步调用。

    	initUserData() {
    	  this.getPsCountryList() // 1 获取国家列表stateOptions,方法内同步
    	  this.getTimeZone() // 2 获取时区timezones,方法内同步
    	  this.getUserInfo() // 3 获取用户信息
    	}
    
    

    在实际运行中,三个方法的执行顺序是1-2-3,但是方法3始终不能获取到stateOptions和timezones

    背后的调用顺序是1-2-3,但是,方法的执行时间并没有严格控制。

    如果想要做到方法调用和执行是同步的,可以使用async和await修饰符。

    async initUserData() {
      await this.getPsCountryList() // 1 获取国家列表stateOptions,方法内同步
      await this.getTimeZone() // 2 获取时区timezones,方法内同步
      await this.getUserInfo() // 3 获取用户信息
    }
    

    Vue中父子组件的生命周期

    在使用过程中 发现倒计时组件中的时间没有显示 在Created方法中初始化了子组件的时间 结果倒计时组件显示NAN

    原因:加载渲染过程

      父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

    子组件更新过程

      父beforeUpdate->子beforeUpdate->子updated->父updated

    父组件更新过程

      父beforeUpdate->父updated

    销毁过程

      父beforeDestroy->子beforeDestroy->子destroyed->父destroyed

    父组件调用子组件方法

    使用ref

    //父组件
    <template>
      <div class="home">
        <HelloWorld ref="mychild"></HelloWorld>
        <div @click="clickParent">click me</div>
      </div>
    </template>
    <script>
      import HelloWorld from '@/components/HelloWorld.vue'
      export default {
        name: 'home',
        components: {
          HelloWorld
        },
        methods: {
          clickParent() {
            this.$refs.mychild.parentHandleclick("嘿嘿嘿");
          }
        }
      }
    </script>
    
    //子组件
    <template>
      <div class="hello">
        <h1>我是HelloWorld组件</h1>
      </div>
    </template>
    <script>
      export default {
        name: 'HelloWorld',
        created() {
    
        },
        methods: {
          parentHandleclick(e) {
            console.log(e)
          }
        }
      }
    </script>
    
    

    子组件调用父组件方法

    子组件里用$emit向父组件触发一个事件,父组件监听这个事件就行了。

    <template>
      <div>
        <child @fatherMethod="fatherMethod"></child>
      </div>
    </template>
    <script>
      import child from '~/components/dam/child';
      export default {
        components: {
          child
        },
        methods: {
          fatherMethod() {
            console.log('测试');
          }
        }
      };
    </script>
    
    <template>
      <div>
        <button @click="childMethod()">点击</button>
      </div>
    </template>
    <script>
      export default {
        methods: {
          childMethod() {
            this.$emit('fatherMethod');
          }
        }
      };
    </script>
    
  • 相关阅读:
    安装git工具在ubuntu系统
    Ubuntu 16.04安装JDK并配置环境变量-【小白版】
    【gRPC使用问题4】
    【gRPC使用问题3】生成出来无法识别Google.Api.AnnotationsReflection.Descriptor
    LNMP
    Centos下安装Mysql
    yum方式安装的Apache目录详解和配置说明
    Centos下 yum方式安装LAMP
    CentOS配置网易163 yum源
    Apache主配置文件httpd.conf 详解
  • 原文地址:https://www.cnblogs.com/yexianduan/p/13754289.html
Copyright © 2020-2023  润新知