我有一个称为路由的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”子数组?