• 子组件props接受父组件传递的值 能修改吗?


    vue2.0 子组件props接受父组件传递的值,能不能修改的问题整理

    父组件代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <!--  -->
    <template>
        <div class=''>
          <el-link type="danger">传值为对象:</el-link>
          <div>
            父组件中显示fatherData的值:{{fatherData}}
            <l0705components :fatherData="fatherData"></l0705components>
          </div>
          <br><br><br>
          <el-link type="danger">传值为字符串,使用v-model传值:</el-link>
          <div>
            父组件中显示fatherData2的值:{{fatherData2}}
            <l0705components v-model="fatherData2"></l0705components>
          </div>
          <br><br>
          <el-link type="danger">传值为字符串:</el-link>
          <div>
            父组件中显示fatherData3的值:{{fatherData3}}
            <l0705components :fatherData3="fatherData3"></l0705components>
          </div>
        </div>
    </template>
     
    <script>
        import l0705components from './views/l0705components'
        export default {
            name: "L0705L",
            components: {
              l0705components
            },
            data() {
                // 这里存放数据
                return {
                  fatherData:{
                    name:"李四",
                    age:"14"
                  },
                  fatherData2:'父组件的数据2',
                  fatherData3: '父组件的数据3'
                }
            }
        }
    </script>

      子组件代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <!--  -->
    <template>
        <div class=''>
          <div v-if="fatherData">
            子组件中显示fatherData的值:{{fatherData}}
            <el-button type="danger" @click="changeFather">
              点击修改父组件fartherData的值-姓名改为“王五”
            </el-button>
          </div>
     
          <div v-if="value!==''">
            <input v-model="value">
          </div>
     
          <div v-if="fatherData3!==''">
            子组件中显示fatherData3的值:{{fatherData3}}
            <el-button type="danger" @click="changeFather3">
              点击修改父组件fartherData3的值,改为“哈哈哈哈哈”
            </el-button>
          </div>
     
        </div>
    </template>
     
    <script>
        export default {
          props:{
            fatherData:{
              type:Object
            },
            value: {
              type: String,
              default: ''
            },
            fatherData3: {
              type: String,
              default: ''
            }
          },
            name: "l0705components",
            data() {
                // 这里存放数据
                return {
                }
            },
            // 方法集合
            methods: {
              changeFather(){
                this.fatherData.name = '王五'
              },
              changeFather3() {
                this.fatherData3 = '哈哈哈哈哈'
              }
            }
        }
    </script>

      页面展示:

     测试结果说明:

     1.父组件传递一个对象,子组件接受,子组件中,直接修改接受到的对象里面的值,可以修改,父子组件的值都会随之改变

    2.使用v-model传值,修改input里面的值,会报错

    意思就是props传递的值不能进行修改

    3.点击修改第三个值,在子组件中的值会修改,但是父组件中不能修改,报错

    总结:

     父子组件传值时,父组件传递的参数,数组和对象,子组件接受之后可以直接进行修改,并且会传递给父组件相应的值也会修改。

    如果传递的值是字符串,直接修改会报错。

    不推荐子组件直接修改父组件中的参数,避免这个参数多个子组件引用,无法找到造成数据不正常的原因

  • 相关阅读:
    Opencv3.4:显示一张图片
    Windows编译Opencv
    FFmpeg4.0笔记:rtsp2rtmp
    FFmpeg4.0笔记:file2rtmp
    Ubuntu编译安装crtmp-server
    python笔记:#014#综合应用
    python笔记:#012#函数
    Python学习--利用scapy库实现ARP欺骗
    metasploit——(三)渗透攻击之旅
    metasploit——(一)情报收集篇
  • 原文地址:https://www.cnblogs.com/airen123/p/11867630.html
Copyright © 2020-2023  润新知