tracker (from Meteor)
This package is an adaptation from
- http://docs.meteor.com/#tracker
- https://github.com/meteor/meteor/blob/master/packages/tracker/tracker.js
npm install @hoda5/tracker
import { autorun, Dependency } from '@hoda5/tracker'
let weather = 'sunny';
const weatherDep = new Dependency;
function getWeather() {
weatherDep.depend();
return weather;
}
function setWeather(newWeather) {
weather = newWeather;
weatherDep.changed();
}
tracking with console.log
autorun( ()=> {
const weather = getWeather();
console.log("Weather: " + weather);
});
setTimeout( () => setWeather("rainy"), 1000);
setTimeout( () => setWeather("cloudy"), 2000);
tracking with ReactJS
const ReactiveComponent = weatherDep.rx(() => {
const weather = getWeather();
return (
<span>
Weather: <b>{weather}</b>
</span>
);
});
const rootElement = document.getElementById("root");
ReactDOM.render(<ReactiveComponent />, rootElement);
setTimeout( () => setWeather("rainy"), 1000);
setTimeout( () => setWeather("cloudy"), 2000);