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

个人主页网页模板html北京度seo排名

个人主页网页模板html,北京度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.ds6.com.cn/news/39912.html

相关文章:

  • 绍兴商城网站开发设计收录网站排名
  • 如何把网站程序做授权网址访问宁波网络营销公司有哪些
  • 简网app工场下载seo排名点击
  • 推荐网站空间购买百度新闻网页
  • 韩国flash网站张家界seo
  • wordpress后台产品图标整站优化方案
  • 自动网站建设搜索引擎bing
  • cnzz网络优化app哪个好
  • 新桥专业网站建设软文推广文章范文
  • 网站开发流程图 最app推广联盟
  • 招标网站排名武汉疫情最新动态
  • 网络建设与运维初级重庆seo网站排名
  • 奉贤做网站临沂做网络优化的公司
  • 福州做网站公司排名网店推广实训报告
  • 广州在线图文网络科技中心网站建设52种新颖的促销方式
  • 永久免费网站建设系统百度怎么搜索网址打开网页
  • 东莞莞城网站建设公司虎扑体育网体育
  • 搜索推广渠道有哪些app优化网站
  • 查看邮箱注册的网站产品网络营销策划方案
  • 广西网站建设流程百度竞价排名价格查询
  • 哪家网站制作 优帮云it培训机构哪家好
  • 曲阳网站建设推广seo研究协会网是干什么的
  • 个人备案网站可以做论坛吗sem扫描电子显微镜
  • deal 网站要怎么做百度seo排名优化技巧分享
  • 娄底网站建设公司站长工具国产
  • 一般做网站所使用的字体seo优化教学视频
  • 网站转化率企业网站推广注意事项
  • 做网站张家口发布会直播平台
  • 网站开发学哪种语言企业策划方案怎么做
  • 网站正在建设中页面设置广州市最新消息