解决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 函数链之演变
Apr 07 Javascript
总结JavaScript的正则与其他语言的不同之处
Aug 25 Javascript
bootstrap模态框实现拖拽效果
Dec 14 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
Jul 13 Javascript
AngularJS实现图片上传和预览功能的方法分析
Nov 08 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
Feb 22 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
May 05 Javascript
浅谈node.js 命令行工具(cli)
May 10 Javascript
从源码里了解vue中的nextTick的使用
Nov 22 Javascript
原生JS实现的自动轮播图功能详解
Dec 28 Javascript
了解JavaScript中的选择器
May 24 Javascript
Vue图片裁剪组件实例代码
Jul 02 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
php生成静态文件的多种方法分享
2012/07/17 PHP
php二维数组排序详解
2013/11/06 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
在Django中创建动态视图的教程
2015/07/15 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
一套C#面试题
2013/10/09 面试题
学雷锋树新风演讲稿
2014/05/10 职场文书
导师工作推荐信范文
2014/05/17 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis