vue3 onMounted的坑

23 篇文章 0 订阅

onMounted的坑

当放在return后面

只显示onmounted里面的函数

<template>
  <h1>我是Vue3</h1>
  <h2>name:{{name}}</h2>
  <h2>age:{{age}}</h2>
  <h2>{{position.age}}</h2>
  <h2 v-show="position.p">{{position.p}}</h2>
  <h2 v-show="position.sex">{{position.sex}}</h2>
  <button @click="sayhello">sayhello</button>
  <button @click="tellposition">position</button>
  <button @click="addsex">添加一个sex属性</button>
  <button @click="deletename">删除name属性</button>

  <hr>
  <h2>当前点击时鼠标的坐标为{{point.x}}-{{point.y}}</h2>
</template>

<script>

import {ref,reactive,onMounted} from 'vue'
export default {

  name: 'App',
  setup(){
     let name=ref("张三");
    let age=ref(18);
    let point=reactive({
      x:0,
      y:0
    })
    let  position=reactive({
      p:"engineer",
      age:18
    })

    function sayhello(){
      alert(name.value+age.value)
    }
    function tellposition(){
      console.log(position),
          position.p="ui"
      position.age=19
    }
    function  addsex(){
        position.sex="nu"
    }
    function  deletename(){
        delete position.p
    }

      
    return{
      name,
      age,
      sayhello,
      position,
      tellposition,
      addsex,
      deletename,
      point
    },
    onMounted(()=>{
      window.addEventListener('click',(event)=>{
        point.x=event.pageX;
        point.y=event.pageY
      })
    })
  }

}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

所以onMounted得放在return前面

<template>
  <h1>我是Vue3</h1>
  <h2>name:{{name}}</h2>
  <h2>age:{{age}}</h2>
  <h2>{{position.age}}</h2>
  <h2 v-show="position.p">{{position.p}}</h2>
  <h2 v-show="position.sex">{{position.sex}}</h2>
  <button @click="sayhello">sayhello</button>
  <button @click="tellposition">position</button>
  <button @click="addsex">添加一个sex属性</button>
  <button @click="deletename">删除name属性</button>

  <hr>
  <h2>当前点击时鼠标的坐标为{{point.x}}-{{point.y}}</h2>
</template>

<script>

import {ref,reactive,onMounted} from 'vue'
export default {

  name: 'App',
  setup(){
     let name=ref("张三");
    let age=ref(18);
    let point=reactive({
      x:0,
      y:0
    })
    let  position=reactive({
      p:"engineer",
      age:18
    })

    function sayhello(){
      alert(name.value+age.value)
    }
    function tellposition(){
      console.log(position),
          position.p="ui"
      position.age=19
    }
    function  addsex(){
        position.sex="nu"
    }
    function  deletename(){
        delete position.p
    }

      onMounted(()=>{
      window.addEventListener('click',(event)=>{
        point.x=event.pageX;
        point.y=event.pageY
      })
    })
    return{
      name,
      age,
      sayhello,
      position,
      tellposition,
      addsex,
      deletename,
      point
    }
   
  }

}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值