路径传值字符串类型,比较总是返回false遇到的坑

我的需求是在A页面传值type跳转到B页面,B页面接收,然后处理逻辑

A页面:

<navigator class="search-box" open-type="navigate" url="../search/search?type='PinDuoDuo'" hover-class="none">  </navigator>

B页面接收值:
 onLoad: function(options) {
    let str = options.type;
    console.log('str的类型:' + typeof (str))   //str的类型:string
    console.log('str的值是:' + str)            //str的值是:'PinDuoDuo'
    console.log(str=="PinDuoDuo")              //false
    console.log(str=='PinDuoDuo')              //false
  },

我就很纳闷,为什么会是false,明明类型都是string。后来一朋友提醒,说比较的时候类型就变了。

console.log(str =="'PinDuoDuo'")      //返回true

弄明白了这个,后面的就好说,直接赋值还是不行 ,一定要赋值字符串。

//刚开始赋值如下,达不到我要的效果
if (str == "'PinDuoDuo'") {
    this.setData({
        currentTab: str,
    })
}

//最后改成下面的,就可以了
if (str == "'PinDuoDuo'") {
    this.setData({
        currentTab: 'PinDuoDuo',
    })
}

为什么第一种方式赋值没用,因为我页面上还做了一次判断比较,所有必须赋值字符串才可以

猜你喜欢

转载自blog.csdn.net/qq_41806475/article/details/84336644