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

大连建设主管部门官方网站网站建设中html下载

大连建设主管部门官方网站,网站建设中html下载,网站方案案例怎么做,找产品厂家用哪个appvue3 组件间通信的方式(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.yayakq.cn/news/546345/

相关文章:

  • 威海网站建设百度q3财报减亏170亿
  • 为什么网站建设价格不一沈阳设计网站公司网站
  • 福州网站免费制作旅游网站建设成都
  • 网站资源整合与建设宿迁房产网58同城网
  • 网站平台建设十大公司百度不收录网站首页
  • 用商标域名注册的非盈利网站公司网站建设和推广
  • 做网站设计需要什么技术安徽网站建设费用
  • 网页设计与网站建设标准教程免费做微网站
  • 电商网站开发ppt代理注册企业登记
  • 网站seo诊断报告怎么写网站域名背景
  • 建设网站需要多少钱在线网页代理访问
  • 排名前十网站建设长沙营销型网站制作费用
  • 科技网站实例编程加盟一般多少钱
  • 适合ps做图的素材网站苏州做网站公司乛 苏州聚尚网络
  • 苏州网站制作工作室阿里云oss可以做网站
  • 网站制作模板免费下载株洲建设企业网站
  • 电子商务网站建设(论文珠海网站搭建
  • 购物网站商城phpcms律师网站模板
  • 源码资源下载站国内设计精美的网站
  • 一 建设茶叶网站前的市场分析做网站大流量
  • 网站设计上市公司建网站步骤
  • c2c网站怎么做详述电子商务网站的建设
  • 企业品牌网站建设公司酷黑网站
  • 如何做网站引流安徽智农网络信息技术服务有限公司 网站开发
  • 网站设计模板旅游景点11页网站建设编辑叫什么岗位
  • 专业建设英文网站广州网站建设多少钱
  • 建设网站和app南宁建站公司有哪些
  • 有没有做视频的网站东阳网站建设软件开发
  • 阿里云做网站用哪个镜像教育培训机构网站
  • 购物网站项目开发自己开的网站 可以做代销吗