解决vue组件props传值对象获取不到的问题


Posted in Javascript onJune 06, 2019

先说问题,父组件利用props向子组件传值,浏览器 console 有这个值,但是获取不到内部的属性,困了我3个小时,真的**

personal
console

以下为原代码

1、home.vue(父组件)--personal是被传的参数

<!--子组件-->
<form-picker class="form-picker"
 :personal="personal"
>
</form-picker>
export default {
  data(){
    return{
      personal:{
        state:'',////判断是修改状态,还是新增状态 add/edit
        data:[]
      }
    }
  },
  mounted(){
   this.$api.personal.searchPersonalInfo(this.userInfo.userId).then((res)=>{
     this.personal.data = res.data.data //这里给personal对象赋值接口传来的数据
    })
  },
}

2、formPicker (子组件) --接收personal

export default {
  props:['active','personal'],
  mounted(){
    console.log(149,this.personal)
    console.log(150,this.personal.state)
  }
}

运行结果

明明149行有 state 值,150行输出却没有了,是不是超级奇怪

后面经过大佬的讲解,其实浏览器console.log也是应该没有的

所以,其实我们子组件一开始根本就没有取到这个personal这个对象。

3、解决方法--使用watch

父组件

export default {
  data(){
    return{
      personal:{
        state:'',////判断是修改状态,还是新增状态 add/edit
        data:[]
      }
    }
  },
  mounted(){
   this.$api.personal.searchPersonalInfo(this.userInfo.userId).then((res)=>{
     //this.personal.data = res.data.data //这里给personal对象赋值接口传来的数据
     //使用以下方法重新赋值,上面方法watch监听不到,具体什么原因,我也不清楚,知道的告知我!谢谢
     this.personal = {
      data: res.data.data,
      state: 'edit'
     }
    })
  },
}

接下来子组件就能 watch 到 personal 了 子组件

watch:{
   personal(newValue,oldValue){
    console.log(181,newValue) 
   },
/** 输出
    {
      data: res.data.data,
      state: 'edit'
     }
**/
  }

总结

以上所述是小编给大家介绍的解决vue组件props传值对象获取不到的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
js实现双向链表互联网机顶盒实战应用实现
Oct 28 Javascript
多个js与css文件的合并方法详细说明
Dec 26 Javascript
浅谈JavaScript异常处理语句
Jun 26 Javascript
早该知道的7个JavaScript技巧
Jun 21 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
Jul 14 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
Mar 15 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
Jul 31 Javascript
微信小程序 本地图片按照屏幕尺寸处理
Aug 04 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
Dec 20 Javascript
用Vue写一个分页器的示例代码
Apr 22 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
Jan 22 Javascript
ES6 Promise对象概念及用法实例详解
Oct 15 Javascript
webpack4之如何编写loader的方法步骤
Jun 06 #Javascript
vue 插件的方法代码详解
Jun 06 #Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 #jQuery
node.js的http.createServer过程深入解析
Jun 06 #Javascript
vue中keep-alive组件的入门使用教程
Jun 06 #Javascript
vue2配置scss的方法步骤
Jun 06 #Javascript
JavaScript中将值转换为字符串的五种方法总结
Jun 06 #Javascript
You might like
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
利用“多说”制作留言板、评论系统
2015/07/14 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
CCPry JS类库 代码
2009/10/30 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
python实现简单温度转换的方法
2015/03/13 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
django model通过字典更新数据实例
2020/04/01 Python
python 画图 图例自由定义方式
2020/04/17 Python
keras中的History对象用法
2020/06/19 Python
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
市场专员岗位职责
2014/02/14 职场文书
责任书范本
2014/08/25 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript