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

丢盖网logo设计免费官网免费网站做seo

丢盖网logo设计免费官网,免费网站做seo,响应式网站外包,美仑-专门做服装的网站vue3 组件间通信的方式(setup语法糖写法) 1. Props方式 该方式用于父传子&#xff0c;父组件以数据绑定的形式声明要传递的数据&#xff0c;子组件通过defineProps()方法创建props对象&#xff0c;即可拿到父组件传来的数据。 // 父组件 <template><div><son…

vue3 组件间通信的方式(setup语法糖写法)

1. Props方式

该方式用于父传子,父组件以数据绑定的形式声明要传递的数据,子组件通过defineProps()方法创建props对象,即可拿到父组件传来的数据。

// 父组件
<template><div><son :msg="state.msg" /></div>
</template><script setup lang="ts">
import son from "./son.vue";
import { reactive } from "vue";
const state = reactive({msg: "父组件的值"
});
</script>
// 子组件
<template><div>{{ msg }}</div>
</template><script setup lang="ts">
const props = defineProps({msg: {type: String,default: ""}
});
</script>

2. emit方式

emit方式也是Vue中最常见的组件通信方式,该方式用于子传父。

// 父组件
<template><div><son @myClick="handleClick" /></div>
</template><script setup lang="ts">
import son from "./son.vue";
const handleClick = val => {console.log(val);
};
</script>
// 子组件
<template><div><button @click="handleClick">点击</button></div>
</template><script setup lang="ts">
const emit = defineEmits(["myClick"]);
const handleClick = () => {emit("myClick", "我是子组件的值");
};
</script>

3、defineExpose

利用defineExpose+ref 可以得到组件里的方法和变量

// 父组件
<template><div><son ref="sonRef" /><button @click="handleClick">点击</button></div>
</template><script setup lang="ts">
import son from "./son.vue";
import { ref } from "vue";
const sonRef = ref(null);
const handleClick = val => {console.log(sonRef.value.msg);
};
</script>
// 子组件
<template><div>son</div>
</template><script setup lang="ts">
defineExpose({msg: "我是子组件"
});
</script>

4. provide/inject 

provide/inject是 Vue 中提供的一对 API。无论层级多深,API 都可以实现父组件到子孙组件的数据传递。

// 父组件
<template><div><son /></div>
</template><script setup lang="ts">
import son from "./son.vue";
import { provide } from "vue";
provide("msg", "我是父组件");
</script>
// 子组件
<template><div>{{ data }}</div>
</template><script setup lang="ts">
import { inject } from "vue";
const data = inject("msg");
</script>

5、attrs

attrs可以接受除去 props、style、 class之外的属性。

// 父组件
<template><div><son :msg="state.msg" :hello="state.hello" /></div>
</template><script setup lang="ts">
import son from "./son.vue";
import { reactive } from "vue";
const state = reactive({msg: "我是父组件",hello: "hello"
});
</script>
// 子组件
<template><div>son</div>
</template><script setup lang="ts">
import { useAttrs } from "vue";
const attrs = useAttrs();
console.log(attrs.msg); // 我是父组件
</script>

6. v-model方式

v-model不能严格成为数据的传递方式,其实只是减少了代码量。

// 父组件
<template><div><son v-model:msg="state.msg" />{{ state.msg }}</div>
</template><script setup lang="ts">
import son from "./son.vue";
import { reactive } from "vue";
const state = reactive({msg: "我是父组件"
});
</script>

子组件需要emit一个叫update:xxx的事件,再把需要更新的响应式数据传给emit方法的第二个参数即可。

// 子组件
<template><div>son<button @click="handleClick">点击</button></div>
</template><script setup lang="ts">
const props = defineProps({msg: {type: String,default: ""}
});
console.log(props.msg);
// 子组件需要emit一个叫update:xxx的事件,再把需要更新的响应式数据传给emit方法的第二个参数即可
const emit = defineEmits(["msg"]);
const handleClick = () => {emit("update:msg", "我是子组件");
};
</script>

7. Vuex / Pinia

Vuex 和 Pinia 是 Vue 3 中的状态管理工具,使用这两个工具可以轻松实现组件通信,具体的使用方法可以查阅官方文档。

Vuex官方文档

Pinia官方文档

http://www.hrbkazy.com/news/26099.html

相关文章:

  • 企业搭建pc端网站百度关键词价格计算
  • 房产局网站建设方案百度竞价推广开户多少钱
  • 国外网站打开很慢dns关于友情链接说法正确的是
  • 黄江镇做网站灰色行业seo大神
  • 网站做邮箱吗百度首页排名优化公司
  • 建设银行网站解除绑定北京刚刚宣布比疫情更可怕的事情
  • 浩森宇特北京网站建设seo营销推广全程实例
  • 免费海报在线制作网站手机建站
  • 扬州网站建设 开元百度一下网页版浏览器
  • 网络维护网站百度搜索引擎优化相关性评价
  • 专业做网站广州合肥网站排名
  • app开发网站模板怎么在网上做推广
  • 广东官方移动网站建设哪家好高端建站
  • 太原市网站建设网站qq群推广软件
  • 如何做 试题类 网站香蕉和忘忧草对焦虑的影响
  • 自己做网站的二维码做网站怎么赚钱
  • 网站后台是怎么做的百度指数第一
  • 潍坊网站建设优化南昌seo搜索排名
  • 深圳网站定制多少钱百度关键词热度查询工具
  • 泉州网站制作建设国内企业网站模板
  • 西安行业网站建设万能软文模板
  • wordpress怎么做背景图片手机360优化大师官网
  • 静态网站做毕业设计十大广告投放平台
  • 微信网站制作入门怎样建立一个网络销售平台
  • 中小型网站建设信息小程序seo推广技巧
  • 做网站的像素是多少钱百度广告投放代理商
  • 做搜索的网站有哪些西安关键词排名推广
  • 登录页面html模板福建网络seo关键词优化教程
  • 常州网站建设哪儿好薇淘宝指数官网入口
  • 咨询学校网站开发费用上海排名优化推广工具