请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我对这里的无限递归还是不太理解,为啥改变有时会出现有时不出现

observer:function(newVal,oldVAl,changedPath){
        let val=newVal<10?'0'+newVal:newVal;
        this.setData({
          index:123123
        });
      }

为什么上一节视频老师随意将index改为123123就不会产生无限递归?

properties: {
    index:{
      type:String,
      observer:function(newVal,oldVal,path){
        let val = newVal.length < 2 ? '0' + newVal : newVal
        this.setData({
          index: val
        })
      }
    }
  },

另,我在问答区看到别的同学写的这个方法,为什么就可以不无限递归了?

正在回答

1回答

7七月 2020-04-21 10:48:04

每次赋值都 是123123,没有改变为什么会触发。

0 回复 有任何疑惑可以回复我~
  • 提问者 迷失的小麦 #1
    改变属性(字符串改为数字)的时候,触发了无限递归,然后属性就是数字了,是不是理解为setData之后,属性自动转为字符串,然后继续改变属性(字符串改为数字),循环往复。。。
    1、不知这样理解对不对?
    2、有个简单的知识给忘了,就是+拼接数字出来的结果是字符串还是数字?
    3、我下面粘贴的代码只是改变了判断的方式(判断<10改为了判断长度),为什么就可以避免无限递归呢?
    问题有点多,感谢回答!!
    回复 有任何疑惑可以回复我~ 2020-04-21 10:55:28
  • 提问者 迷失的小麦 #2
    我刚刚测试了,+拼接数字出来的结果是字符串,也就是说字符串变为了字符串,属性没有发生变化,为什么会触发无限递归呢?
    回复 有任何疑惑可以回复我~ 2020-04-21 11:02:59
  • 7七月 回复 提问者 迷失的小麦 #3
    原理很简单,值改变就会触发,每次都设置的是同样的123123,就不会触发。
    回复 有任何疑惑可以回复我~ 2020-04-21 13:30:33
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信