mirror of
https://github.com/wekan/wekan.git
synced 2026-02-21 07:24:07 +01:00
- Clone @wekanteam/meteor-reactive-cache to npm-packages/ - Add .meteorignore to exclude npm-packages from Meteor - Update package.json to use local file path This allows direct modification of the package for Meteor 3.0 async migration while maintaining publishability to npm.
72 lines
2.3 KiB
Markdown
72 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))
|