当前位置: 首页> 健康> 母婴 > 网络规划设计师教程第二版 百度网盘_工业互联网平台的意义有哪些_网络营销介绍_网站权重查询工具

网络规划设计师教程第二版 百度网盘_工业互联网平台的意义有哪些_网络营销介绍_网站权重查询工具

时间:2025/8/13 15:13:21来源:https://blog.csdn.net/qushaming/article/details/143372617 浏览次数:0次
网络规划设计师教程第二版 百度网盘_工业互联网平台的意义有哪些_网络营销介绍_网站权重查询工具

目录

一、什么是Prop

1.1. Prop传递数据代码示例图

1.2. 演示代码App.vue 

1.3. 演示代码UserInfo.vue

二、props 校验

2.1. props校验简单写法

2.1.1. 演示代码App.vue

2.1.2. 演示代码BaseProgress.vue 

2.2. props校验完整写法

2.2.1. 演示代码BaseProgress.vue

 2.2.2. 演示代码App.vue

三、prop & data、单向数据流

3.1. 单向数据流演示代码 


一、什么是Prop

在上一个章节中,我们讲解了组件之间的关系以及组件之间父子通信的解决方案,其中就提到了props的概念,父子关系可以通过props进行通信。那么什么是Prop呢?Prop其实是组件上注册的一些自定义属性,它可以用来向子组件传递数据。

Prop的特点:

1. 可以传递任意数量的prop

2. 可以传递任意类型的prop

1.1. Prop传递数据代码示例图

1.2. 演示代码App.vue 

<template><div id="app"><UserInfo:username="username":age="age":isSingle="isSingle":house="house":fav="fav"></UserInfo></div>
</template><script>
import UserInfo from './components/UserInfo.vue'
export default {data () {return {username: '王哲晓',age: 31,isSingle: true,house: {address: '杭州'},fav: ['骑行', '写代码', '国漫', '收纳']}},components: {UserInfo: UserInfo}
}
</script><style></style>

1.3. 演示代码UserInfo.vue

<template><div class="userinfo"><h3>我是个人信息组件</h3><div>姓名:{{ username }}</div><div>年纪:{{ age }}</div><div>是否单身:{{isSingle ? '是' : '否'}}</div><div>房产:{{house}}</div><div>兴趣爱好:{{fav.join('、')}}</div></div>
</template><script>
export default {props: ['username', 'age', 'isSingle', 'house', 'fav']
}
</script><style>
.userinfo {width: 300px;border: 3px solid #000;padding: 20px;
}
.userinfo > div {margin: 20px 10px;
}
</style>

二、props 校验

props校验为组件的prop指定验证要求,不符合要求的话控制台就会有错误提示,以此帮助开发者快速发现错误。

语法:

① 类型校验:Number、String、Boolean、Array、Object、Function...

② 非空校验

③ 默认值

④ 自定义校验:通过Vue提供的validator校验器可以自定义各种校验逻辑。

2.1. props校验简单写法

2.1.1. 演示代码App.vue

<template><div class="app"><BaseProgress :w="width"></BaseProgress></div>
</template><script>
import BaseProgress from './components/BaseProgress.vue'
export default {data() {return {width: 50,}},components: {BaseProgress,},
}
</script><style>
</style>

2.1.2. 演示代码BaseProgress.vue 

<template><div class="base-progress"><div class="inner" :style="{ width: w + '%' }"><span>{{ w }}%</span></div></div>
</template><script>
export default {props: {w: Number,},
}
</script><style scoped>
.base-progress {height: 26px;width: 400px;border-radius: 15px;background-color: #272425;border: 3px solid #272425;box-sizing: border-box;margin-bottom: 30px;
}
.inner {position: relative;background: #379bff;border-radius: 15px;height: 25px;box-sizing: border-box;left: -3px;top: -2px;
}
.inner span {position: absolute;right: 0;top: 26px;
}
</style>

2.2. props校验完整写法

2.2.1. 演示代码BaseProgress.vue

<template><div class="base-progress"><div class="inner" :style="{ width: w + '%' }"><span>{{ w }}%</span></div></div>
</template><script>
export default {props: {w: {type: Number,require: true,default: 0,validator (value) {if (value >= 0 && value <= 100) {return true} else {console.error('传入的prop必须是0-100的数字')return false}}}}
}
</script><style scoped>
.base-progress {height: 26px;width: 400px;border-radius: 15px;background-color: #272425;border: 3px solid #272425;box-sizing: border-box;margin-bottom: 30px;
}
.inner {position: relative;background: #379bff;border-radius: 15px;height: 25px;box-sizing: border-box;left: -3px;top: -2px;
}
.inner span {position: absolute;right: 0;top: 26px;
}
</style>

 2.2.2. 演示代码App.vue

<template><div class="app"><BaseProgress :w="width"></BaseProgress></div>
</template><script>
import BaseProgress from './components/BaseProgress.vue'
export default {data() {return {width: 70,}},components: {BaseProgress,},
}
</script><style>
</style>

三、prop & data、单向数据流

prop和data共同点:都可以给组件提供数据。

prop和data区别:

data 的数据是自己的 → 随便改

prop 的数据是外部的 → 不能直接改,要遵循 单向数据流

单向数据流:父级 prop 的数据更新,会向下流动,影响子组件。这个数据流动是单向的。

3.1. 单向数据流演示代码 

<template><div class="app"><BaseCount :count="count" @changeCount="handleChange"></BaseCount></div>
</template><script>
import BaseCount from './components/BaseCount.vue'
export default {components:{BaseCount},data(){return {count:100}},methods:{handleChange(newVal){// console.log(newVal);this.count = newVal}}
}
</script><style></style>
<template><div class="base-count"><button @click="handleSub">-</button><span>{{ count }}</span><button @click="handleAdd">+</button></div>
</template><script>
export default {// 1.自己的数据随便修改  (谁的数据 谁负责)// data () {//   return {//     count: 100,//   }// },// 2.外部传过来的数据 不能随便修改props: {count: {type: Number,},},methods: {handleSub() {this.$emit('changeCount', this.count - 1)},handleAdd() {this.$emit('changeCount', this.count + 1)},},
}
</script><style>
.base-count {margin: 20px;
}
</style>

关键字:网络规划设计师教程第二版 百度网盘_工业互联网平台的意义有哪些_网络营销介绍_网站权重查询工具

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: