lib/hooks/useStoreValue.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.useStoreValue = void 0;
var react_1 = require("react");
/**
*
* @param store Store to subscribe to
* @param valueName Name of the state value to subscribe to
* @returns Selected value
*/
function useStoreValue(store, valueName) {
// Make sure store is passed in
if (!store) {
console.error("Store passed in is undefined, failed to bind to ".concat(valueName.toString()));
}
var currentValue = store.state[valueName];
// Setup state to trigger updates when changes happen
var _a = (0, react_1.useState)(currentValue), value = _a[0], setValue = _a[1];
// Use effect to subscribe to the store's selected value's changes
(0, react_1.useEffect)(function () {
// Store or valueName has changed, update state
setValue(currentValue);
//
store.subscribeToChanges(setValue, valueName);
// Return cleanup func
return function () {
store.unSubscribeToChanges(setValue, valueName);
};
}, [setValue, valueName, store]);
return value;
}
exports.useStoreValue = useStoreValue;
//# sourceMappingURL=useStoreValue.js.map