我在一家商店有活动
export class EventStore {
@observable
events: Event[] = [];
@action
addEvent(event: Event) {
this.events = [...this.events, event]
};
};
我的活动如下:
export class Event{
classType: string;
}
我想观察商店但仅特定商店 events
classType
属性的变化
例如:
我有一个classType为“ AddToCart”和“ Order”的事件,并且我只希望观察添加的“ Order”,它已从events
中删除
我要使用import { observer } from "mobx-react"
在EventStore中有一些魔术可以做吗,或者我必须在我的组件中处理(如果有的话)?
与此同时,我正在做这样的事情:
reaction(
() => eventStore.lastEvent,
event => {
if (event.classType === "Order")
this.newEvent = { ...event }
}
)
答案 0 :(得分:1)
您可以添加computed
属性
@computed
get orderEvents() {
// Add whatever filtering you want
return this.events.filter(event => event.classType === 'Order')
};
如果您需要传递参数,可以从computedFn
mobx-utils
:
filteredEvents = computedFn(function (classType) {
return this.events.filter(event => event.classType === classType)
})
注意:请不要使用箭头功能,因为this
会不正确。
https://github.com/mobxjs/mobx-utils#computedfn
https://mobx.js.org/refguide/computed-decorator.html#computeds-with-arguments