场景:

我实际用到的是这样的,我父组件引用子组件related,父组件调用获取页面详情的方法,更新了state值related,子组件根据该related来渲染相关新闻内容,但是页面打开的时候总是先加载子组件,子组件在渲染的时候还没有获取到更新之后的related值,即使在子组件中watch该值的变化依然不能渲染出来子组件的相关新闻内容。

我的解决办法:

父组件像子组件传值,当父组件执行了获取页面详情的方法之后,state值related更新,然后传给子组件,子组件再进行渲染,可以正常获取到。

父组件代码:

{{ title }}

  • {{pubName}}

  • {{authorName}}

    {{createAt|formatTime}}

关注

责任编辑:{{editorName}}
阅读全文

import { Toast } from 'mint-ui';

import {mapState} from 'vuex'

import Related from './Related.vue'

import moment from 'moment';

export default{

name:"NewsDetails",

components:{

Related,

},

data(){

return {

id:this.$route.params.id,

topicType:"news",

contentStatus:false,

curHeight:0,

bodyHeight:5000,

hotCommentScrollTop:0

}

},

created(){

this.id=this.$route.params.id;

this.fetchData();

moment.locale('zh-cn');

},

mounted(){

setTimeout(()=>{

this.contentToggle();

},500)

},

watch: {

'$route'(to,from){

this.id=this.$route.params.id;

this.fetchData();

}

},

computed: {

...mapState({

title: state => state.newsDetails.title,

authorName: state => state.newsDetails.authorName,

pubNews: state => state.newsDetails.pubNews,

pubName: state => state.newsDetails.pubName,

editorName: state => state.newsDetails.editorName,

createAt: state => state.newsDetails.createAt,

content: state => state.newsDetails.content,

myFavourite: state => state.newsDetails.myFavourite,

related: state => state.newsDetails.related,

})

},

filters:{

formatTime(time){

return moment(time).fromNow();

},

},

methods:{

fetchData(){

this.$store.dispatch('getDetails',this.id);

},

follow(){

Toast('登录后进行关注');

this.$router.push("/login");

},

contentToggle(){

this.curHeight=this.$refs.bodyFont.offsetHeight;

if(parseFloat(this.curHeight)>parseFloat(this.bodyHeight)){

this.contentStatus=true;

}else{

this.contentStatus=false;

}

// this.hotCommentScrollTop=this.$refs.hotComment.height;

console.log(this.hotCommentScrollTop);

},

}

}

子组件related.vue

相关新闻

{{item.title}}

打开唐人家

置顶

阅读 {{item.read}}

{{item.createAt|formatTime}}

import {mapActions, mapState, mapGetters} from 'vuex'

import moment from 'moment'

export default{

data(){

return {

lists: [],

id:this.$route.params.id,

}

},

props:{

related:Array //重点是这里

},

created(){

moment.locale('zh-cn');

},

/*computed: {

...mapState({

related: state => state.newsDetails.related,

})

},*/

filters:{

formatTime(time){

return moment(time).fromNow();

},

},

methods:{

},

watch: {

related (val) {

this.lists = val;

},

'$route'(to,from){

this.id=this.$route.params.id

}

}

}

效果如图:

总结

以上所述是小编给大家介绍的父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

vue 父刷新子_父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法...相关推荐

  1. Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法

    Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法 在添加完之后,可以使用 $.parser.parse();这个方法进行处理: (1) 对整个页面重新渲染: $.parser ...

  2. 在xp中不能查看或更改文件夹的“只读”属性或“系统”属性解决方法

    在xp中不能查看或更改文件夹的"只读"属性或"系统"属性解决方法 症状  您可能会遇到下列任一症状: • 不能使用文件夹的"属性"对话框查看 ...

  3. VS2010中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法

    原文:VS2010中,无法嵌入互操作类型"--",请改用适用的接口的解决方法 1.提示:在VS2010,在引用COM组件的时候,出现了无法嵌入互操作类型"--" ...

  4. 在小皮面板中使用cmd进入mysql命令,包含mysql错误unknown variable ‘secure_file_priv‘解决方法(超详细)

    在小皮面板中使用cmd进入mysql命令,包含mysql错误unknown variable 'secure_file_priv'解决方法(超详细) 先按win+r键打开运行对话框,输入cmd,进入: ...

  5. confluence中org.apache.tomcat.util.net.NioEndpoint$Acceptor.run Socket accept failed的解决方法

    confluence中org.apache.tomcat.util.net.NioEndpoint$Acceptor.run Socket accept failed的解决方法 参考文章: (1)co ...

  6. oracle xe 乱码_关于Linux操作系统下终端乱码的完美解决方法

    初入linux的程序员们,经常会受到乱码的问候.可谓"始乱终弃".因为乱码,并且最终放弃了linux的不在少数.好吧,言归正传,先看看各类乱码是怎么形成的. 中文字符乱码 这种情况 ...

  7. JavaScript中的window.close在FireFox和Chrome上不能正常动作的解决方法

    原文:JavaScript中的window.close在FireFox和Chrome上不能正常动作的解决方法 JS中关闭窗口的方法window.close()在IE上能够正常动作,而在FireFox和 ...

  8. mysql+concat函数问题_Mysql5.7中使用group concat函数数据被截断的问题完美解决方法...

    前天在生产环境中遇到一个问题:使用 GROUP_CONCAT函数select出来的数据被截断了,最长长度不超过1024字节,开始还以为是navicat客户端自身对字段长度做了限制的问题.后面故意重新I ...

  9. Cent OS 6/7 中通过yum安装软件时提示cannot find a valid baseurl...的解决方法

    Cent OS 6/7 中通过yum安装软件时提示cannot find a valid baseurl...的解决方法 参考文章: (1)Cent OS 6/7 中通过yum安装软件时提示canno ...

最新文章

  1. 传道、授业、解惑:俞士纶院长参加数据科学研究院第五届“院长接待日”
  2. SAP 物料在启用序列号管理或者不启用序列号管理之间快速切换?
  3. hikaridatasource 加密后登陆不上_python测试开发django42.auth模块登陆认证
  4. C#验证子网掩码的正确性
  5. OpenCV 3.0又一个革命性版本,它会带来哪些改变
  6. 程序开发天团必备单品,稳定输出还加持千元商务礼限时送!
  7. C语言源代码展示:常用转换函数实现原理
  8. 话里话外:企业ERP实施的前前后后(二)
  9. spring简易学习笔记三(AOP)
  10. 四叉树 gis java_GIS中四叉树索引及其分类介绍 | 麻辣GIS
  11. orgChart实现多重树状图结构
  12. ipa文件如何下载安装OR如何设置IPA文件下载链接
  13. C语言函数中的px是什么,C语言学习知识程序设计试卷及其规范标准答案
  14. 高项_第十二章项目采购管理
  15. 有效预防xss_预防XSS攻击的一些方法整理
  16. log日志:如何设置log级别、打印字体的颜色
  17. 如何用Nuxt.js构建项目,SSR官网项目搭建流程
  18. windows上配置深度学习(李沐-动手学深度学习)
  19. 编写程序,求出几何形状(长方形、正方形、圆形)的周长和面积
  20. html手机上怎么修改,怎么用手机修改路由器密码?

热门文章

  1. Python使用redis的消息队列
  2. mysql数据库前端缓存_MySQL数据库性能优化--缓存参数优化
  3. 币对交易所_比特币向1万4大涨,OK交易所的比特币为什么反而贬值7折?
  4. 【黑马程序员 C++教程从0到1入门编程】【笔记6】C++核心编程(文件操作)
  5. Linux进程地址空间与进程内存布局详解,内核空间与用户空间
  6. python mpl_toolkits.mplot3d.axes3d.Axes3D()使用 介绍
  7. Tensorflow实现自动编码器
  8. TCP/IP面试常问合集,JavaWeb内容及HTTP协议
  9. 幽暗统领 树的重心 牛客白月赛44
  10. K Co-prime Permutation 构造,gcd,互质(2020.12.南京)