• 前端框架Vue语法(三)


    一.ref属性

    1. 被用来给元素或子组件注册引用信息(id的替代者

    2. 应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)

    3. 使用方式:

        1. 打标识:```

    .....

    ``` 或 ``````

        2. 获取:```this.$refs.xxx```

     For example:

    1. <template>
    2. <div>
    3. <h1 v-text="msg" ref="title">h1>
    4. <button ref="btn" @click="showDOM">点我输出上方的DOM元素button>
    5. <School ref="sch"/>
    6. div>
    7. template>
    8. <script>
    9. //引入School组件
    10. import School from './components/School'
    11. export default {
    12. name:'App',
    13. components:{School},
    14. data() {
    15. return {
    16. msg:'欢迎学习Vue!'
    17. }
    18. },
    19. methods: {
    20. showDOM(){
    21. console.log(this.$refs.title) //真实DOM元素
    22. console.log(this.$refs.btn) //真实DOM元素
    23. console.log(this.$refs.sch) //School组件的实例对象(vc)
    24. }
    25. },
    26. }
    27. script>

    二.props配置 

    1. 功能:让组件接收外部传过来的数据

     

    2. 传递数据:``````

     

    3. 接收数据:

        1. 第一种方式(只接收):```props:['name'] ```

        2. 第二种方式(限制类型):```props:{name:String}```

        3. 第三种方式(限制类型、限制必要性、指定默认值):

            ```js

            props:{

             name:{

             type:String, //类型

             required:true, //必要性

             default:'老王' //默认值

             }

            }

            ```

        > 备注:props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到data中一份,然后去修改data中的数据。

     

    Fore example:

    student组件:

    1. <template>
    2. <div>
    3. <h1>{{msg}}h1>
    4. <h2>学生姓名:{{name}}h2>
    5. <h2>学生性别:{{sex}}h2>
    6. <h2>学生年龄:{{myAge+1}}h2>
    7. <button @click="updateAge">尝试修改收到的年龄button>
    8. div>
    9. template>
    10. <script>
    11. export default {
    12. name:'Student',
    13. data() {
    14. console.log(this)
    15. return {
    16. msg:'我是一个尚硅谷的学生',
    17. myAge:this.age
    18. }
    19. },
    20. methods: {
    21. updateAge(){
    22. this.myAge++
    23. }
    24. },
    25. //简单声明接收
    26. // props:['name','age','sex']
    27. //接收的同时对数据进行类型限制
    28. /* props:{
    29. name:String,
    30. age:Number,
    31. sex:String
    32. } */
    33. //接收的同时对数据:进行类型限制+默认值的指定+必要性的限制
    34. props:{
    35. name:{
    36. type:String, //name的类型是字符串
    37. required:true, //name是必要的
    38. },
    39. age:{
    40. type:Number,
    41. default:99 //默认值
    42. },
    43. sex:{
    44. type:String,
    45. required:true
    46. }
    47. }
    48. }
    49. script>

     App:

    1. <template>
    2. <div>
    3. <Student name="李四" sex="女" :age="18"/>
    4. div>
    5. template>
    6. <script>
    7. import Student from './components/Student'
    8. export default {
    9. name:'App',
    10. components:{Student}
    11. }
    12. script>

    三.,mixin混入

    1. 功能:可以把多个组件共用的配置提取成一个混入对象

    2. 使用方式:

        第一步定义混合:

     

        ```

        {

            data(){....},

            methods:{....}

            ....

        }

        ```

        第二步使用混入:

     

        ​ 全局混入:```Vue.mixin(xxx)```

        ​ 局部混入:```mixins:['xxx']  ```

     

    For example:

    student组件:

    1. <template>
    2. <div>
    3. <h2 @click="showName">学生姓名:{{name}}h2>
    4. <h2>学生性别:{{sex}}h2>
    5. div>
    6. template>
    7. <script>
    8. // import {hunhe,hunhe2} from '../mixin'
    9. export default {
    10. name:'Student',
    11. data() {
    12. return {
    13. name:'张三',
    14. sex:'男'
    15. }
    16. },
    17. // mixins:[hunhe,hunhe2]
    18. }
    19. script>

    school组件:

    1. <template>
    2. <div>
    3. <h2 @click="showName">学校名称:{{name}}h2>
    4. <h2>学校地址:{{address}}h2>
    5. div>
    6. template>
    7. <script>
    8. //引入一个hunhe
    9. // import {hunhe,hunhe2} from '../mixin'
    10. export default {
    11. name:'School',
    12. data() {
    13. return {
    14. name:'尚硅谷',
    15. address:'北京',
    16. x:666
    17. }
    18. },
    19. // mixins:[hunhe,hunhe2],
    20. }
    21. script>


    App.vue:

    1. <template>
    2. <div>
    3. <School/>
    4. <hr>
    5. <Student/>
    6. div>
    7. template>
    8. <script>
    9. import School from './components/School'
    10. import Student from './components/Student'
    11. export default {
    12. name:'App',
    13. components:{School,Student}
    14. }
    15. script>

    混入文件 mixin.js:
     

    1. export const hunhe = {
    2. methods: {
    3. showName(){
    4. alert(this.name)
    5. }
    6. },
    7. mounted() {
    8. console.log('你好啊!')
    9. },
    10. }
    11. export const hunhe2 = {
    12. data() {
    13. return {
    14. x:100,
    15. y:200
    16. }
    17. },
    18. }

     

     

  • 相关阅读:
    基于JAVA疫情物资商城和疫情数据可视化系统设计与实现 开题报告
    基于微信小程序的宠物医院诊所小程序源码
    SE、CBAM、ECA 、CA注意力机制
    云原生之旅 - 6)不能错过的一款 Kubernetes 应用编排管理神器 Kustomize
    Axios 中的文件上传(Upload File)方法
    F. Quests Codeforces Round #835 (Div. 4)(二分答案)
    Vue-devTools安装—创建项目方法2 ui创建——Vue指令综合案例——汽车品牌管理
    【算法|动态规划No.19】leetcode413. 等差数列划分
    Activiti 8.0.0 发布,业务流程管理与工作流系统
    STM32(垃圾桶开关盖)
  • 原文地址:https://blog.csdn.net/m0_64226820/article/details/128057891