web学习笔记(六十一)

devtools/2024/12/22 18:03:10/

 

目录

如何使用公共组件来编写页面 


如何使用公共组件来编写页面 

1.导入公共组件nav.vue

javascript">import Catenav from "@/components/nav.vue";

2.在页面插入子组件

如果使用了setup语法糖此时就可以直接在页面插入 <Catenav ></Catenav>标签,

反之,则需要在页面写入 components()函数

javascript"><script>
import Catenav from "@/components/nav.vue";
import { ref } from "vue";
export default {components: {// "cates_nav":CateNav,Catenav //注册的组件名称和组件实例名称保持一致时可以简写。},setup() {const count = ref(0);const setcount = () => {count.value++;};return {count,setcount};}
};
</script>

3.父组件向子组件进行数据传递

在<Catenav ></Catenav>标签内写入要从父页面传到子页面的数据,此时默认传递的数据都是字符串类型的,如果需要传递其他类型的数据(数字、数组、对象等)可以用v-bind进行数据绑定后再传递数据。

javascript">  <Catenavtitle="一级分类"name="nav组件":age="20":sex="true":arr="[10, 20, 30]":mycount="count"></Catenav>

(1)数据传递-父传子不使用setup语法糖

在子组件中将父组件传过来的数据使用props进行接收 ,此时可以直接在页面使用{{}}来渲染数据,如果需要在js部分使用父组件传过来的数据,则需要在setup后面的括号内写入props再使用相关数据。

javascript"><script>
export default {setup(props) {console.log(props.name);},props: ["title", "name", "age", "sex", "arr", "mycount"] //子组件配置props属性,这个属性的只可以是数组,也可以是对象。它里面用来声明父组件需要传递数据的属性。//   子组件不允许修改父组件传过来的数据
};
</script>

(2)数据传递-父传子使用setup语法糖

       使用setup语法糖是需要使用defineProps()方法来接收父组件传递过来的数据。defineProps方法的参数是一个数组,我们将需要接收的数据以数组元素的形式编写即可,此时就可以在页面直接使用{{}}来渲染数据。如果需要在js部分使用父组件传递过来的数据,则需要用到defineProps方法的返回值,定义一个变量接一下defineProps的返回值,然后通过打点的方法来使用父组件传过来的数据。

javascript"><style scoped lang="less"></style>
<!-- setup语法糖特有的语法:defineProps()。其他地方无法使用 -->
<script setup>
const props = defineProps(["title", "name", "age", "sex", "arr", "mycount"]);
const clickbtn = () => {console.log(props.title);
};
</script>

4.子组件向父组件进行数据传递

子传父用到了自定义事件,自定义事件就是我们自己通过v-on声明的事件,之前我们用到的click事件是系统定义的,系统事件由系统触发,自定义事件,由咱们触发。

javascript">    <p @setkw="getkw"></p><!-- 给p标签自定义了一个事件,事件名称是setkw -->

(1)数据传递-子传父 不使用setup语法糖

给标签设置一个自定义事件,然后将触发事件后触发的方法写到父组件中。

javascript"><template><div><input type="text" v-model="search" /><!-- 父组件通过v-on自定义一个事件,这个事件名称叫setkw。系统事件由系统触发,自定义事件,由咱们触发。这个自定义事件传给了子组件,就由子组件触发seykw事件 --><Search @setkw="getkw"></Search></div>
</template>
<script setup>
import { ref } from "vue";
import Search from "@/components/Seach.vue";
const search = ref("");
console.log(search);
const getkw = (kw) => {console.log("执行自定义事件", kw);
};
</script>

此时需要在子组件中接收我们自定义的事件,为后面在子组件触发父组件中的自定义事件做准备。通过setup传参的方式将时间名拿到,然后绑定按钮的点击事件,此时点击事件会触发我们自定义的事件,而我们自定义的事件又会自动执行对应的方法,然后将我们需要传递的数据写在方法的参数部分即可完成数据传递。

setup的两个参数
参数一props,可以拿到父传子的数据,必写参数,不使用也不可以省略
参数二上下文对象(context object),可以通过.emit来触发事件
javascript"><template><div><!--封装搜索组件 --><input type="text" v-model="kw" /><button @click="search">搜索</button></div>
</template>
<script>
import { ref } from "vue";
export default {setup(props, cot) {const kw = ref("");const search = () => {//此时触发父组件绑定的自定义事件setkw,间接调用getkw函数cot.emit("setkw", kw.value);};return {kw,search};}
};
</script>

(2) 数据传递-子传父 使用setup语法糖

和不使用语法糖大致是一样的,只不过此时需要使用defineEmits()方法。

javascript"><script setup>
import { ref } from "vue";
const emit = defineEmits(['setkw']);
const kw = ref("");
const search = () => {//此时触发父组件绑定的自定义事件setkw,间接调用getkw函数emit("setkw", kw.value);
};
</script>


http://www.ppmy.cn/devtools/45972.html

相关文章

c++【入门】你多大了

时间限制 : 1 秒 内存限制 : 128 MB 一天玩仔跑来问周周你多大了&#xff0c;周周告诉他自己 1010 岁了&#xff0c;玩仔又说自己也是&#xff0c;你听到了这个对话&#xff0c;想用程序显示出两个人的对话内容&#xff0c;现在就来试一试吧。 输入 无 输出 输出三行&…

记一次mysql索引优化

生产日志告警出现一条慢 sql 告警, 通过 sql 监控平台拿到 这条sql 语句是 : SELECTid,report_id,report_detail_id,item_code,report_type,photo FROM**** 表 WHEREdel_flag 0 AND (report_type 1 AND report_detail_id IN ( 1742 )) 之后用 explain 分析这条 sql 的命中…

构建安全的Web环境:WAF配置与管理

构建安全的Web环境&#xff1a;WAF配置与管理 在当今数字化时代&#xff0c;Web应用已成为企业和个人提供服务的重要平台。然而&#xff0c;Web应用面临的安全威胁也日益增多&#xff0c;包括跨站脚本&#xff08;XSS&#xff09;、SQL注入、分布式拒绝服务&#xff08;DDoS&a…

02_初识Nginx

文章目录 一、基础知识1.1 什么是代理服务器1.2 正向代理概述1.3 反向代理概述1.4 负载均衡1.5 动静分离 二、Nginx2.1 Nginx是什么2.2 Nginx的特点2.3 Nginx负载均衡策略2.4 Nginx的Master-Worker模式 参考链接 一、基础知识 1.1 什么是代理服务器 在最简单的场景下&#xf…

[leetcode hot150]第五十七题,插入区间

题目&#xff1a; 给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表 intervals&#xff0c;其中 intervals[i] [starti, endi] 表示第 i 个区间的开始和结束&#xff0c;并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval [start, end] 表示…

今日好料推荐(大数据湖体系规划)

今日好料推荐&#xff08;大数据湖体系规划&#xff09; 参考资料在文末获取&#xff0c;关注我&#xff0c;获取优质资源。 大数据湖体系规划 一、大数据湖简介 大数据湖&#xff08;Data Lake&#xff09;是一个集中式的存储库&#xff0c;用于存储来自各种来源的结构化和…

力扣173题:二叉搜索树迭代器(含模拟面试)

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 关注微信公众号 数据分析螺丝钉 免费领取价值万元的python/java/商业…

海外仓系统定制是否有必要:对中小海外仓来说,拿来即用更划算

中小海外仓现在可以说占据了海外仓行业极大的比重&#xff0c;这类海外仓凭借服务优良&#xff0c;灵活的优势吸引了很多跨境电商的喜爱。 不过对于中小型海外仓本身&#xff0c;随着客户的增加&#xff0c;日常的仓库管理、订单货物处理却变成了一个挑战。应对这种情况&#…