mirror of
https://github.com/wekan/wekan.git
synced 2026-02-21 23:44:06 +01:00
73 lines
2.3 KiB
Markdown
73 lines
2.3 KiB
Markdown
|
|
# meteor-reactive-cache [](https://travis-ci.org/maxnowack/meteor-reactive-cache)
|
|||
|
|
Utilities for caching reactive data
|
|||
|
|
|
|||
|
|
### Installation
|
|||
|
|
````bash
|
|||
|
|
$ npm install --save meteor-reactive-cache
|
|||
|
|
````
|
|||
|
|
|
|||
|
|
### Usage
|
|||
|
|
|
|||
|
|
#### `ReactiveCache(compare: function)`
|
|||
|
|
A simple reactive cache. It haves the same API like a `ReactiveDict`, but the values are getting deleted if all wrapped computations are stopped.
|
|||
|
|
|
|||
|
|
````es6
|
|||
|
|
import { Tracker } from 'meteor/tracker'
|
|||
|
|
import { ReactiveCache } from 'meteor-reactive-cache'
|
|||
|
|
|
|||
|
|
const reactiveCache = new ReactiveCache(/* compareFn */);
|
|||
|
|
reactiveCache.set('foo', 'bar');
|
|||
|
|
const computation = Tracker.autorun(() => {
|
|||
|
|
reactiveCache.get('foo'); // reactive!
|
|||
|
|
})
|
|||
|
|
reactiveCache.set('foo', 'new bar');
|
|||
|
|
computation.stop(); // keys will be invalidated if they don't have reactive dependants
|
|||
|
|
reactiveCache.get('foo'); // undefined
|
|||
|
|
````
|
|||
|
|
|
|||
|
|
#### `DataCache(resolve: function, { timeout: number, compare: function })`
|
|||
|
|
Provides a simple reactive data cache, by passing in a function, that resolves a key to data in a reactive context.
|
|||
|
|
|
|||
|
|
````es6
|
|||
|
|
import { Tracker } from 'meteor/tracker'
|
|||
|
|
import { DataCache } from 'meteor-reactive-cache'
|
|||
|
|
|
|||
|
|
const dataCache = new DataCache((key) => {
|
|||
|
|
// do some expensive reactive work here, which returns the same data for the same key.
|
|||
|
|
// this function will only be executed if a reactive dependency changes or the requested key isn't cached.
|
|||
|
|
|
|||
|
|
})
|
|||
|
|
const computation = Tracker.autorun(() => {
|
|||
|
|
reactiveCache.get('foo'); // reactive!
|
|||
|
|
})
|
|||
|
|
computation.stop(); // keys will be invalidated if they don't have reactive dependants
|
|||
|
|
reactiveCache.get('foo'); // undefined
|
|||
|
|
````
|
|||
|
|
|
|||
|
|
#### `reactiveField(resolve: function, { timeout: number, compare: function })`
|
|||
|
|
Like DataCache, but with a much simpler API and support for multiple function parameters.
|
|||
|
|
|
|||
|
|
````es6
|
|||
|
|
import { Tracker } from 'meteor/tracker'
|
|||
|
|
import { reactiveField } from 'meteor-reactive-cache'
|
|||
|
|
|
|||
|
|
const field = reactiveField((val1, val2, val3) => {
|
|||
|
|
// …
|
|||
|
|
})
|
|||
|
|
const computation = Tracker.autorun(() => {
|
|||
|
|
field('foo', 'bar', 1234); // reactive!
|
|||
|
|
})
|
|||
|
|
````
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
## License
|
|||
|
|
Licensed under MIT license. Copyright (c) 2017 Max Nowack
|
|||
|
|
|
|||
|
|
## Contributions
|
|||
|
|
Contributions are welcome. Please open issues and/or file Pull Requests.
|
|||
|
|
|
|||
|
|
## Maintainers
|
|||
|
|
- Max Nowack ([maxnowack](https://github.com/maxnowack))
|