解决vue做详情页跳转的时候使用created方法 数据不会更新问题


Posted in Javascript onJuly 24, 2020

大家在做项目的时候肯定会遇到携带某个参数跳转到详情页 然后取这个参数,下面是重点

刚开始我用cookie把这个参数存起来在详情页面取这个参数发现只有第一次取到的是正确的 你在回到父页面在点击进详情页发现取到的数据跟原来的一模一样根本没有发生改变(因为router跳转时是不会刷新页面的所以导致我取得值永远不能更新),我以为是cookie有问题了后来又用了query携带参数跳转,sessionStorage方法存取发现都不行,

看下图解决办法

解决vue做详情页跳转的时候使用created方法 数据不会更新问题

解决vue做详情页跳转的时候使用created方法 数据不会更新问题

我也不知道其中是什么原理 没搞明白 但是解决了问题了,看了文档还是没理解这两个方法具体区别。

补充知识:vue中子组件的created、mounted钩子中获取不到props中的值问题

父子组件通信

这个官网很清楚,也很简单,父组件中使用v-bind绑定传送,子组件使用props接收即可

例如:

父组件中

<template>
  <div>
    <head-top></head-top>
    <section class="data_section">
      <header class="chart-title">数据统计</header>
      <el-row :gutter="20" class="chart-head">
        <el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head blue-head">统计:</div></el-col>
        <el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head">销售数量 <span>{{number}}</span></div></el-col>
        <el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head">销售金额 <span>{{amount}}</span></div></el-col>
        <el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head">利润统计 <span>{{profits}}</span></div></el-col>
      </el-row>
    </section>
    <chart :chartData="chartData"></chart>
  </div>
</template>

<script>
  data(){
      return {
        number: null,
        amount: null,
        profits: null,
        chartData: [10,10,10]
      }
    },
</script>

子组件中

export default {
  props: ['chartData']
}

这种情况下,子组件的methods中想要取到props中的值,直接使用this.chartData即可

但是有写情况下,你的chartData里面的值并不是固定的,而是动态获取的,这种情况下,你会发现methods中是取不到你的chartData的,或者取到的一直是默认值

比如下面这个情况

父组件中

<script>
  data(){
      return {
        number: null,
        amount: null,
        profits: null,
        chartData: []
      }
    },
    mounted(){
      this.getStatistics();
    },
    methods: {
      //获取统计数据
      getStatistics(){
        console.log('获取统计数据')
        axios.post(api,{

        }).then((res) => {
          this.number = res.data.domain.list[0].number;
          this.amount = res.data.domain.list[0].amount;
          this.profits = res.data.domain.list[0].profits;
          this.chartData = [this.number,this.amount,this.profits];
        }).catch((err) => {
          console.log(err);
        })
      },
    },
</script>

此时子组件的methods中使用this.chartData会发现是不存在的(因为为空了)

这情况我是使用watch处理

解决方法如下:

使用watch

props: ['chartData'],
    data(){
      return {
        cData: []
      }
    },
    watch: {
      chartData: function(newVal,oldVal){
        this.cData = newVal; //newVal即是chartData
        this.drawChart();
      }
    },

监听chartData的值,当它由空转变时就会触发,这时候就能取到了,拿到值后要做的处理方法也需要在watch里面执行!

以上这篇解决vue做详情页跳转的时候使用created方法 数据不会更新问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript  Error 对象 错误处理
May 18 Javascript
在chrome中window.onload事件的一些问题
Mar 01 Javascript
基于jquery ajax 用户无刷新登录方法详解
Apr 28 Javascript
javascript实现字符串反转的方法
Feb 05 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
Jul 14 Javascript
webpack入门必知必会
Jan 16 Javascript
javascript 中null和undefined区分和比较
Apr 19 Javascript
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
详解webpack4之splitchunksPlugin代码包分拆
Dec 04 Javascript
使用puppeteer爬取网站并抓出404无效链接
Dec 20 Javascript
JavaScript实现与使用发布/订阅模式详解
Jan 19 Javascript
vue实现表格合并功能
Dec 01 Vue.js
js实现验证码功能
Jul 24 #Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
Jul 24 #Javascript
深入了解Vue.js 混入(mixins)
Jul 23 #Javascript
JS实现简单移动端鼠标拖拽
Jul 23 #Javascript
JS使用Chrome浏览器实现调试线上代码
Jul 23 #Javascript
JS实现鼠标按下拖拽效果
Jul 23 #Javascript
javascript利用canvas实现鼠标拖拽功能
Jul 23 #Javascript
You might like
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
用Socket发送电子邮件
2006/10/09 PHP
PHP生成带有雪花背景的验证码
2008/09/28 PHP
五款常用mysql slow log分析工具的比较分析
2011/05/22 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
js简单时间比较的方法
2016/08/02 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
Python画图学习入门教程
2016/07/01 Python
用Python实现KNN分类算法
2017/12/22 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
python设置表格边框的具体方法
2020/07/17 Python
银行简历自我评价
2014/02/11 职场文书
保密工作责任书
2014/04/16 职场文书
政府信息公开实施方案
2014/05/09 职场文书
公司担保书范文
2014/05/21 职场文书
自主招生自荐信范文
2015/03/04 职场文书
教师个人教学反思
2016/02/23 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书