У меня есть наблюдаемый массив mobx, называемый маршрутами. Routes имеет свойство под названием views, которое также является массивом. Я могу успешно извлечь нужный элемент из маршрутов, используя array.filter, но когда я пытаюсь вернуть представления этого маршрута, используя array.map, он возвращает undefined. В данном конкретном случае, когда я нахожу нужный элемент с помощью array.filter, я хочу вернуть массив представлений этого элемента, а не сам элемент
Вот мой наблюдаемый массив внутри класса
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}
/>
и возвращает ноль или пусто.
Если я пытаюсь получить доступ к свойству views, например, «store.RouteStore.returnPartialArray.views», возвращается ошибка. Невозможно прочитать свойство 'map' из неопределенного
Если я изменю returnPartialArray, чтобы он был таким
get returnPartialArray() {
return this.routes
.filter( route => route.nameSys === "library")
}
возвращает элемент верхнего уровня, где nameSys === "библиотека". Но дело в том, что мне не нужен элемент верхнего уровня, мне нужно только его свойство views.
Моя цель здесь заключается в том, чтобы хотя весь маршрутный массив использовался для создания маршрутов, я хочу использовать только библиотечные маршруты, из которых можно создать систему меню (конечно, в магазине есть много других маршрутов).
Я ожидал что-то вроде следующего, что было сделано в приглашении 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, который я не понимаю при работе с наблюдаемыми массивами. Итак, мой вопрос, как мне получить только вложенный массив "views" из вычисляемой функции returnPartialArray?