treeselect 异步拿到数据后 要经过一个过滤 然后放入options 否则组件会崩溃

事件缘由:由于城市树会反复调用,所以不用api每次调用,改用数据缓存一次读取,各处使用。然后我把调用的数据放入treeselect,发现组件就崩溃了,但是api读取的数据就没问题。

查看不是props问题,也不是watch问题,因为是个数组,不是属性,所以怀疑一下。

最后发现是数据没有进行过滤导致。

 

getOptions (data) {
      let d = data
      let parentType = d[0].parentId
      let putFn = (pid) => {
        let arr = []
        for (let i = 0, len = d.length; i < len; i++) {
          if (d[i].parentId === pid) {
            let obj = {}
            obj = { ...d[i] }
            let n = putFn(d[i].id)
            if (n.length !== 0) {
              obj.children = n
            }
            arr.push(obj)
          }
        }
        return arr
      }
      return putFn(parentType)
    },

 

posted @ 2019-10-22 10:42  彭成刚  阅读(1211)  评论(0编辑  收藏  举报