Vue3 的基础内容

报错: Cannot read properties of null (reading 'clientWidth')

您的JS运行的时候你的页面还没有加载完成,所以你的JS代码找不到你的页面元素,就会抛出这个问题,所以要放在生命周期函数mounted

1. 在main.js文件

/* vue3 写法 */
import { createApp } from 'vue'
import App from './App.vue'
//导入路由
import router from './route';
const app = createApp(App);
app.use(router);
app.mount("#app");


/* vue2 写法 */
import Vue from "vue";
import App from "./App.vue";
import router from "./router/index";
new Vue({
  router,
  render: (h) => h(App),
}).$mount("#app");

2. 代理对象proxy直接使用

虽然穿过来的参数 和 this.data ,都是代理对象,当可以直接像Vue2那样使用

//打印的结构是这样的,比较干净

proxy {
    "title": "用户",
    "index": "user"
}

handleMenuItem(obj){
      //高亮设置
      this.activeTabName = obj.index;
      let result = this.editableTabs.findIndex((item) => {
        return item.index == obj.index;
      });
      if(result != -1){
        return; 
      }
      this.editableTabs.push(obj);
},

3. 事件处理

在使用vue-draggable-resizable进行拖拽,里面有滚动条,在电脑屏幕上拖拽没问题,但在触屏的上,在滚动条部分拖拽,导致滚动条产生边滚动,边移动。

非Prop得Attribute,

<demo id="demo" class="box"></demo>
const demo = {
        template: `<p>非prop的attribute</p>`
}
显示结果
<p id="demo" class="box">非prop的attribute</p>

自定义事件

原来父子组件通信的 this.$emit('myEvent') ,my-component @my-event="doSomething"></my-component> 就是自定义事件

插槽

应用场景:

自己写一次性组件不会用到,只有像Element UI库这种,才会使用插槽

模板引用

关于$refs 只会在组件渲染完成之后生效 ,这仅作为一个用于直接操作子元素的“逃生舱”——你应该避免在模板或计算属性中访问$refs

<input ref="input" />
this.$refs.input.focus()
这仅作为一个用于直接操作子元素的“逃生舱”——你应该避免在模板或计算属性中访问 $refs

组合式API

注意:

  • setup 选项在组件被创建之前执行 ,所以里面找不到 this

  • setup 选项是一个 接收 propscontext 的函数 ,通过return 将内容暴露给组件的 计算属性、方法、生命周期函数等等。

其实关键在于抽离逻辑关注点目前军分区项目,业务过于简单

响应性API

//ref 具有响应性

const count = ref(1);
console.log(count); //打印 1


//reactive: 返回对象的响应式副本,并且能够使所有嵌套在里面的属性,都变成响应性的

const obj = reactive({ name:'滕' })
console.log(obj.name); //打印 滕

vue3 setup中 拿到返回的数据 如何直接赋值给响应式变量

// 这几种办法都可以触发响应性,推荐第一种
// 方案1:创建一个响应式对象,对象的属性是数组
const state = reactive({
    arr: []
});
state.arr = [1, 2, 3]

// 方案2: 使用ref函数
const state = ref([])
state.value = [1, 2, 3]

// 方案3: 使用数组的push方法
const arr = reactive([])
arr.push(...[1, 2, 3])

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tengyuxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值