<aside> đź’ˇ Derived is inspired by redux/reselect.
</aside>
Derived’s functions are:
StateReader
Select a tree from the state
let derived: Derived<Int> = store.derived(.map(\\.count))
// we can write also this.
// However, we recommend do above way as possible
// because it enables cache.
let derived: Derived<Int> = store.derived(.map { $0.count })
Technically, above method callings are produced from below declaration.
extension StoreType {
public func derived<NewState>(
_ memoizeMap: MemoizeMap<Changes<State>, NewState>,
dropsOutput: ((Changes<NewState>) -> Bool)? = nil,
queue: TargetQueue? = nil
) -> Derived<NewState>
}
MemoizeMap
manages to transform value from the state and keep performance that way of drops transform operations if the input value no changes.
Compute a value from the state
Derived can create any type of value what we need. MemoizeMap