当前位置: 首页 > news >正文

刚成立的公司怎样做自己网站网络营销师报名入口

刚成立的公司怎样做自己网站,网络营销师报名入口,旅游网站制作视频百度云,苏州网站建设哪家做得好初学vue3时应该注意的几个问题 声明响应式 响应式数据的声明在vue2的时候很简单,在data中声明就行了。但现在可以使用多个方式。 reactive用于声明Object, Array, Map, Set; ref用于声明String, Number, Boolean 使用reactive来声明基础数据类型(Str…

初学vue3时应该注意的几个问题

声明响应式

响应式数据的声明在vue2的时候很简单,在data中声明就行了。但现在可以使用多个方式。

reactive用于声明Object, Array, Map, Set;
ref用于声明String, Number, Boolean

使用reactive来声明基础数据类型(String, Number, Boolean)将导致警告,并且该值不会变为响应式。

<script setup>
import { reactive } from "vue";const count = reactive(0);
</script>

在这里插入图片描述

但是反过来,使用ref来声明复杂数据类型(Object, Array, Map, Set等)是生效的,因为ref内部对于复杂数据类型会调用reactive来声明。

解构reactive值

假设我们有一个带有计数器和增加计数器的按钮的响应式对象。

<template>Counter: {{ state.count }}<button @click="add">Increase</button>
</template><script>
import { reactive } from "vue";
export default {setup() {const state = reactive({ count: 0 });function add() {state.count++;}return {state,add,};},
};
</script>

当使用es6进行解构时就会出问题。

<template><div>Counter: {{ count }}</div><button @click="add">Increase</button>
</template><script>
import { reactive } from "vue";
export default {setup() {const state = reactive({ count: 0 });function add() {state.count++;}return {...state,add,};},
};
</script>

在这里插入图片描述

代码看起来是一样的,根据我们之前的经验,应该是没问题的,但事实上,Vue 的反应性跟踪是通过属性访问来工作的。这意味着我们无法分配或解构响应式对象,因为与第一个引用的反应性连接丢失了。这是使用响应式的限制之一。

.value

ref接受一个值并返回一个响应式对象。可以通过.value来访问对象。

const count = ref(0)console.log(count) // { value: 0 }
console.log(count.value) // 0count.value++
console.log(count.value) // 1

refs 在模板中使用时会被解开,不需要写.value.

<script setup>
import { ref } from 'vue'const count = ref(0)function increment() {count.value++
}
</script><template><button @click="increment">{{ count }}<!--不需要.value  --></button>
</template>

不过要小心!只有顶级属性才能通过.访问。下面的代码片段将产生[object Object]

<script setup>
import { ref } from 'vue'const object = { foo: ref(1) }</script><template>{{ object.foo + 1 }}  // [object Object]
</template>

emit事件

vue中,子组件可以通过$emit来与父组件进行通信,只需要添加一个自定义侦听器来侦听事件。

父组件:

<my-component @my-event="doSomething" />

子组件

this.$emit('my-event')

现在emit事件需要使用defineEmits来声明。

<script setup>
const emit = defineEmits(['my-event'])
emit('my-event')
</script>

另一件要记住的事情是,defineEmits或者(defineProps用于声明 props)在script setup.都不需要导入。使用时它们会自动可用。

<script setup>
const props = defineProps({foo: String
})const emit = defineEmits(['change', 'delete'])
// setup code
</script>

.native修饰符已被移除

声明附加选项

选项式 API 方法中的一些属性在script setup并不被支持:

  • name
  • inheritAttrs
  • 插件或库所需的自定义选项

解决方案是在script setup RFC中定义的同一组件中使用 2 个不同的script标签。

<script>export default {name: 'CustomName',inheritAttrs: false,customOptions: {}}
</script><script setup>// script setup logic
</script>

定义异步组件

异步组件以前是通过将它们包含在函数中来声明的

const asyncModal = () => import('./Modal.vue')

Vue 3 开始,异步组件需要使用defineAsyncComponent方法显式定义。

import { defineAsyncComponent } from 'vue'const asyncModal = defineAsyncComponent(() => import('./Modal.vue'))

在模板中使用不必要的包装元素

Vue 2 中需要组件模板的单个根元素,这有时会引入不必要的包装元素。

<template><div><header>...</header><main>...</main><footer>...</footer></div>
</template>

vue3支持多个根元素

<template><header>...</header><main v-bind="$attrs">...</main><footer>...</footer>
</template>

使用错误的生命周期事件

所有组件生命周期事件都通过添加on前缀或完全更改名称来重命名。

在这里插入图片描述

http://www.hkea.cn/news/920964/

相关文章:

  • 南宁老牌网站建设公司正版google下载
  • 网站做信用认证有必要吗微信朋友圈推广平台
  • 电子政务网站建设要求百度关键词规划师
  • 博客网站开发毕设免费大数据分析网站
  • 深圳教育平台网站建设好消息疫情要结束了
  • 国外设计文章的网站淘宝代运营靠谱吗
  • 市桥网站建设sem论坛
  • 猎头公司是做什么的可靠吗排名优化外包公司
  • 扶贫网站建设关键词查询神器
  • 沈阳酒店企业网站制作公司2023年9月疫情又开始了吗
  • 厦门专业网站建设如何快速推广一个新产品
  • 帮人做传销网站违法吗seo网站排名助手
  • 如何做优品快报下的子网站营销型网站建设目标
  • 用织梦做网站调用乱码营业推广是什么意思
  • 做走私网站北京口碑最好的it培训机构
  • 网站建设OA系统开发it培训机构哪家好
  • 网站运维可以做哪些域名查询网站入口
  • 网站开发的基本语言外贸平台自建站
  • 女生自己做网站营销方法有哪些
  • 怎么自己做网站吓别人金融网站推广圳seo公司
  • 彩票网站的客服有做吗海淀seo搜索优化多少钱
  • 河源哪有做网站网页模板设计
  • 手机网站可以做英文版本吗近三天时政热点
  • 怎么做网站游戏网络优化排名培训
  • ic外贸网站建设黑帽seo技巧
  • 实业有限公司网站怎么做百度一下了你就知道官网
  • 企业电子商务网站推广平台有哪些渠道
  • 本地用织梦做网站百度的网站网址
  • 基础展示营销型型网站新闻发稿平台有哪些
  • 做游戏赚钱的网站最新新闻热点事件2022