Avoid mutating a prop directly since the value will be overwritten whenever the parent comp

简介: Avoid mutating a prop directly since the value will be overwritten whenever the parent comp

最近用vue练习项目,想在子组件中使用props中的值,但是在mounted中没有办法拿,最后终于搞明白了

这里我简单说一下父组件给子组件传值的两种情况(静态跟动态的数据)。

父组件中:

<template>
    <div class="order">
      <!-- 子组件  父组件通过属性传值  属性用-链接,值用驼峰命名--> 
    <order-header :order-data="orderData" :order-data1="orderData1"></order-header>
  </div>
</template>
<script>
export default{
  data(){
    return {
      orderData:[],    //这里的数据是动态的, (可以是从后端获取的数据)
      orderData1:[1,2,3]  //这里为静态值直接传给子组件,并且不发生变化
    }
  },
  mounted(){
    this.getOrder();
  },
  methods:{
    //获取数据
    getOrder(){
      axios.post(api,{
      }).then((res)=>{
        console.log(res);
        //将请求的数据放在orderData中    //这里的res.data.pageData是数组
        this.orderData =  res.data.pageData
      }).catch((err)=>{
        console.log(err);
      })
    }
  }
}
</script>

分析

父组件传递给子组件传递两个值,orderData1传递静态不变的值,orderData传递动态的值

子组件:

export default{
    props:['orderData','orderData1']
}

分析

子组件中接收用props,在template中可以直接使用{{orderData}}

子组件的methods中想要取到props中的值,

直接使用this.orderData1,但这种情况只能获取静态的值,所以只能获取orderData1,而orderData的值是动态的,如果用this.**获取到的是空或者是默认值

解决方法使用watch 重点

//  这里单独解释orderData(动态)
props:['orderData'],
data(){
  return {
    newOrderData:[]
  }
 },
 methods:{
  order(){
      console.log(this.newOrderData)     
    }
 },
watch:{
    orderData:function(newData,oldData){
      console.log(newData)  //newData就是orderData
      this.newOrderData = newData;     
      //  methods的函数在这里调用可以获取到newOrderData的值        
      this.order();
    }
  }

注:监听的值,如果有空转变时就触发,拿到值之后的处理方法也要在watch中运行

结论

props接收静态数据用this.**

动态数据用watch

如有不足之处,还望不吝赐教

喜欢的话可以体验我的小程序

微信小程序搜:红旗头像制作

相关文章
|
5月前
|
虚拟化 iOS开发 MacOS
VMware ESXi 9.0 macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
VMware ESXi 9.0 macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
1241 0
|
JavaScript 算法 前端开发
JS算法必备之Array常用操作方法
这篇文章详细介绍了JavaScript中数组的创建、检测、转换、排序、操作方法以及迭代方法等,提供了数组操作的全面指南。
439 2
JS算法必备之Array常用操作方法
|
iOS开发
mac不通过Xcode直接打开IOS模拟器
mac不通过Xcode直接打开IOS模拟器
702 24
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
1041 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
Android开发 Kotlin
Flutter集成fluwx编译出错:compileReleaseKotlin
Flutter集成fluwx编译出错:compileReleaseKotlin
383 2
|
小程序
扫描普通二维码进入体验版小程序却一直进入线上版本?这个配置要注意!
开发小程序过程中,我们会遇到很多不同的场景,其中,扫描普通二维码进入小程序就是其中之一。
|
Java API
解决HTTP 400 Bad Request错误的方法
解决HTTP 400 Bad Request错误的方法
若依修改,切换首页,改成自己想要跳转的login页
若依修改,切换首页,改成自己想要跳转的login页
uniapp 实现带参数跳转页面
uniapp 实现带参数跳转页面
316 0
|
存储 前端开发 API
对象存储OSS产品常见问题之获取文件结构并在前端页面展示如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
613 0