获取属于mobx中可观察数组的数组属性

时间:2019-05-01 14:47:11

标签: reactjs mobx

我有一个称为路由的mobx可观察数组。 Routes具有一个称为views的属性,它也是一个数组。我可以使用array.filter从路由成功检索所需的元素,但是当我尝试使用array.map返回该路由的视图时,它返回未定义的。在这种情况下,一旦我用array.filter找到所需的元素,我想返回该元素的views数组,而不是元素本身

这是我在一个类中的可观察数组

class routeStore {
  routes =  [
    {
      collapse: true,
      name: "Library",
      nameSys: "library",
      id: shortid.generate(),
      icon: "book",
      views:[
            {
              path: ["/library/tsearch"],
              name: "Title Search",
              id:shortid.generate(),
              mini: "S",
              component: LibraryHome
            },
            {
              path: ["/library/asearch"],
              name: "Author Search",
              id:shortid.generate(),
              mini: "S",
              component: LibraryHome
            }
          ]
     }
   ]

 get returnPartialArray() {
    return this.routes
      .filter( route => route.nameSys === "library")
      .map( item => item.views )
  }
}
decorate(routeStore, {
  routes: observable,
  returnPartialArray: computed,
})

在我要求部分数组的代码中,我有这个:

  <NestedCollapsibleList 
    routes={store.RouteStore.returnPartialArray} 
    classes={classes} 
    location={this.props.location} 
    miniActive={ this.props.miniActive}
  />

,它返回null或为空。

如果我尝试访问“ store.RouteStore.returnPartialArray.views”这样的views属性,则会返回错误,无法读取未定义的属性“ map”

如果我将returnPartialArray更改为这样

get returnPartialArray() {
    return this.routes
      .filter( route => route.nameSys === "library")
  }

它返回顶级元素,其中nameSys ===“ library”。但事实是,我不需要顶级元素,只需要其views属性。

我的目标是,虽然应该使用整个路由数组来创建路由,但我只想使用库路由来创建菜单系统(当然,商店中还有许多其他路由)。 / p>

我期望在Node提示符下完成以下操作(此示例中的数据已完成):

> let arr = [{name:"bob",views:[{part:"robber"}]}]
undefined
> arr
[ { name: 'bob', views: [ [Object] ] } ]
> arr.filter(item=>item.name === "bob")
[ { name: 'bob', views: [ [Object] ] } ]
> arr.filter(item=>item.name === "bob").map(route => route.views)
[ [ { part: 'robber' } ] ]

arr.filter()。map()应该返回子数组。在使用可观察数组时,我不了解一个mobx原理。所以我的问题是,如何从returnPartialArray计算函数中获取“ views”子数组?

0 个答案:

没有答案