将一系列事件转换为一个值的变化的对象,就像redux那样。
这应当是修改“状态”的唯一途径,所有状态的变化都应当通过这个对象来完成。
触发状态变化需要配合“事件” EventRegistry 来完成。
注意:一般不要使用默认构造函数,而是使用 builder 来构建ReducedValue对象。
| Name |
|---|
T |
AsyncValue<T>new ReducedValue<T>(initialValue, reducers)
| Name |
|---|
T |
| Name | Type |
|---|---|
initialValue |
T |
reducers |
ValueReducer<any, T>[] |
Private _value: any
Private listenAllEvents: any
Readonly resolved: boolean
get value(): T
获取当前的值
T
Static builder<T>(): ReducedValueBuilder<T>
通过builder模式创建一个ReducedValue对象。
| Name |
|---|
T |
ReducedValueBuilder<T>
Static lastEventValue<EVENT>(event, initialValue, filter?): ReducedValue<EVENT>
简化版的 lastMappedEventValue,当无需映射事件值时,可以使用这个方法。
| Name |
|---|
EVENT |
| Name | Type |
|---|---|
event |
EventRegistry<EVENT> |
initialValue |
EVENT |
filter? |
(event: EVENT) => boolean |
ReducedValue<EVENT>
See
lastMappedEventValue
Static lastMappedEventValue<EVENT, VALUE>(event, initialValue, mapper, filter?): ReducedValue<VALUE>
快速创建一个只保留最后一个事件的ReducedValue对象。一般用于实现“事件”到“状态”的映射。
| Name |
|---|
EVENT |
VALUE |
| Name | Type | Description |
|---|---|---|
event |
EventRegistry<EVENT> |
要转化为状态的事件 |
initialValue |
VALUE |
初始状态,即事件首次触发前的状态 |
mapper |
(event: EVENT) => VALUE |
事件对象到状态的映射函数 |
filter? |
(event: EVENT) => boolean |
事件过滤函数。如果返回false,则不会触发状态变化 |
ReducedValue<VALUE>
一个ReducedValue对象