解决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 相关文章推荐
DWZ刷新dialog解决方法
Mar 03 Javascript
jQuery实现切换页面过渡动画效果
Oct 29 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
May 20 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
Jan 04 Javascript
五步轻松实现JavaScript HTML时钟效果
Mar 25 Javascript
angularJs中json数据转换与本地存储的实例
Oct 08 Javascript
微信小程序HTTP接口请求封装的实现
Feb 21 Javascript
js对象数组和对象的使用实例详解
Aug 27 Javascript
JavaScript闭包相关知识解析
Oct 19 Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 Javascript
vue设置全局访问接口API地址操作
Aug 14 Javascript
vue @click.native 绑定原生点击事件
Apr 22 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
php 魔术函数使用说明
2010/02/21 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
Python判断操作系统类型代码分享
2014/11/22 Python
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
python中偏函数partial用法实例分析
2015/07/08 Python
Python argv用法详解
2016/01/08 Python
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
深入理解python中的select模块
2017/04/23 Python
Django实现组合搜索的方法示例
2018/01/23 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS