天天看點

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)
    },