mpvue icon indicating copy to clipboard operation
mpvue copied to clipboard

mpvue 多层级数据更新后视图不更新渲染

Open yeh110 opened this issue 5 years ago • 28 comments

mpvue 多层级数据更新后视图渲染不更新

mpvue 版本号:

[[email protected]]

最小化复现代码:

<template>
  <div>
      <div> 一层级数据: {{text}}</div>
      <div> 多层级数据: {{fields.info.text}}</div>
      <div @click="onUpdate">更新数据</div>
  </div>
</template>

<script>
export default {

  data () {
    return {
      text: '1',
      fields: {
        info:{
          text: '1'
        }
      }
    }
  },
  methods: {
    onUpdate(){
      let random = Math.random();
      this.text = random
      this.fields.info.text = random;
      console.log("一层级数据::"+this.text, "多层级数据:"+this.fields.info.text);
    }
  }
}
</script>

问题复现步骤: data数据为多层级时,更新 data多层级中数据后页面不能渲染出来。

观察到的表现: 一层的数据更新没问题 fields.info.text 数据更新了 ,渲染没有更新

截图或动态图: image

yeh110 avatar Mar 26 '19 15:03 yeh110

可以使用this.$set(this.fields, "info.text", 0.267)来触发视图更新

coolRoger avatar Mar 27 '19 06:03 coolRoger

可以使用this.$set(this.fields, "info.text", 0.267)来触发视图更新 用过此方法并不能测底解决

yeh110 avatar Mar 28 '19 03:03 yeh110

@yeh110 感谢反馈,我们正在升级这块内容

Dewyzee avatar Mar 28 '19 12:03 Dewyzee

我也遇到了同样的问题,以前的版本是没有问题的

134355 avatar Mar 29 '19 10:03 134355

this.setting.size.splice(index, 1) 这样还触发不了视图更新,还搞毛球啊

134355 avatar Mar 29 '19 10:03 134355

2层嵌套子组件, 也会出现, 数据修改后, 不更新的问题, 不知道是否相同问题导致, 1.0.13版本是没问题的, 更新到1.4之后出现

algking avatar Apr 03 '19 07:04 algking

@ yeh110感谢反馈,我们正在升级这块内容

大概什么时候能处理,或者有什么临时的处理措施没有

yeh110 avatar Apr 07 '19 06:04 yeh110

同样出现这样的问题

daqian123 avatar Apr 09 '19 01:04 daqian123

同样出现这样的问题

官方现在也不知道干嘛

134355 avatar Apr 09 '19 03:04 134355

都急死了,数据不能实时更新,希望官方感觉出个小版本修复这个bug吧

daqian123 avatar Apr 15 '19 02:04 daqian123

都急死了,数据不能实时更新,希望官方感觉出个小版本修复这个错误吧

是啊 我放着项目等更新呢 太坑了

yeh110 avatar Apr 15 '19 10:04 yeh110

我又来了了,还没更新,稳

daqian123 avatar Apr 18 '19 07:04 daqian123

这样

var o = this. fields
this.fields = null
this.fields = o

或者

this.fields = Object.assign({}, this.fields)

或者(如果其他地方不需要引用原对象时)

JSON.parse(JSON.stringify(this.fields))

或者

// data 里加一个没用的东西
data () {
    return {
      temp: 1
    }
  }

// 需要刷新视图时改变了之后加一句:
this.fields.info.text = random
this.temp++

imyellow avatar May 19 '19 02:05 imyellow

我就是来看看这个bug有没有修好,结果遇到楼上在扯蛋

134355 avatar May 21 '19 08:05 134355

估计是最近的更新1.4.4 到 1.4.6 出现了新的bug。暂时切换到1.0.13 保平安。项目好大,不敢随便升级了。1.0.13的小程序插件bug只好先缓缓了。

xywai1993 avatar Jun 21 '19 03:06 xywai1993

亲测有效。得重新赋值this.arr = [...this.arr] 。具体参考找个https://github.com/Meituan-Dianping/mpvue/issues/1554

dang221 avatar Jul 02 '19 07:07 dang221

亲测有效。得重新赋值this.arr = [...this.arr] 。具体参考找个#1554++++++++++1

wwb1117 avatar Jul 15 '19 12:07 wwb1117

亲测有效。得重新赋值this.arr = [...this.arr] 。具体参考找个#1554++++++++++1; 赶紧修复一下吧,当前我使用的2.0版本。 总结几点 1 东西写错 根本不报错。直接不执行了。必须用debugger 一行一行往下找 看哪行跳走 2 就是不更新的问题,各种不更新。两层组件不更新 , 就算更新了。会在尾部添加一个跟列表尾部一样的数据,个人觉得很奇葩 3 事件加不上 。。。。。等等问题

maopixin avatar Aug 01 '19 11:08 maopixin

亲测有效。得重新赋值this.arr = [...this.arr] 。具体参考找个#1554++++++++++1; 赶紧修复一下吧,当前我使用的2.0版本。 总结几点 1 东西写错 根本不报错。直接不执行了。必须用debugger 一行一行往下找 看哪行跳走 2 就是不更新的问题,各种不更新。两层组件不更新 , 就算更新了。会在尾部添加一个跟列表尾部一样的数据,个人觉得很奇葩 3 事件加不上 。。。。。等等问题

升级到2.0.6

Dewyzee avatar Aug 01 '19 12:08 Dewyzee

强制刷新数据 解决了 that.$forceUpdate()

daxiongz avatar Aug 27 '19 02:08 daxiongz

关于更新的问题,我是"mpvue": "1.0.18" 如果都解决不了。可以试试nextTick和forceUpdate一起用

palytoxin avatar Sep 02 '19 11:09 palytoxin

亲测有效。得重新赋值this.arr = [...this.arr] 。具体参考找个#1554++++++++++1; 赶紧修复一下吧,当前我使用的2.0版本。 总结几点 1 东西写错 根本不报错。直接不执行了。必须用debugger 一行一行往下找 看哪行跳走 2 就是不更新的问题,各种不更新。两层组件不更新 , 就算更新了。会在尾部添加一个跟列表尾部一样的数据,个人觉得很奇葩 3 事件加不上 。。。。。等等问题

升级到2.0.6

升级到2.0.6也还是没解决这个问题 多层级数据还是没更新

flzyup avatar Sep 06 '19 00:09 flzyup

可以使用this.$set(this.fields, "info.text", 0.267)来触发视图更新

这样更新会导致,fields下创建了一个名为:info.text的key,而不是更新info object下的text key 坑大了!

flzyup avatar Sep 06 '19 00:09 flzyup

亲测有效。得重新赋值this.arr = [...this.arr] 。具体参考找个#1554

把这个页面的方法试了一遍,就这个有效

enilu avatar Dec 19 '19 12:12 enilu

亲测有效。得重新赋值this.arr = [...this.arr] 。具体参考找个#1554

把这个页面的方法试了一遍,就这个有效

我这个也没渲染出来怎么啊?

Jane-blog avatar Dec 25 '19 05:12 Jane-blog

亲测有效。得重新赋值this.arr = [...this.arr] 。具体参考找个#1554

把这个页面的方法试了一遍,就这个有效

我这个也没渲染出来怎么啊?

我也用了,没用,楼上的方法全部试过,都没用。只能减少层级。

liteli1987gmail avatar Jan 17 '20 03:01 liteli1987gmail

已经N久了~

NineSu avatar May 20 '20 02:05 NineSu

可以考虑迁移到uniapp https://github.com/dcloudio/uni-app

Tan-Tshunglee avatar Jun 25 '20 13:06 Tan-Tshunglee