@nlabs/arkhamjs-utils-react
Version:
ArkhamJS React Utilities
23 lines (22 loc) • 2.88 kB
JavaScript
/**
* Copyright (c) 2020-Present, Nitrogen Labs, Inc.
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
*/ import { isEqual } from '@nlabs/utils/checks/isEqual';
import { useContext, useEffect, useRef, useState } from 'react';
import { FluxContext } from './FluxContext.js';
export const useFluxState = (key, defaultValue)=>{
const { flux, state } = useContext(FluxContext);
const ref = useRef(null);
const value = flux?.getState(key, defaultValue);
const [updatedValue, setValue] = useState(value);
useEffect(()=>{
if (!isEqual(value, ref.current)) {
ref.current = value;
setValue(value);
}
}, [
state
]);
return updatedValue;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2Fya2hhbWpzL3BhY2thZ2VzL2Fya2hhbWpzLXV0aWxzLXJlYWN0L3NyYy91c2VGbHV4U3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAbmxhYnMvdXRpbHMvY2hlY2tzL2lzRXF1YWwnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBGbHV4Q29udGV4dCB9IGZyb20gJy4vRmx1eENvbnRleHQuanMnO1xuXG5leHBvcnQgY29uc3QgdXNlRmx1eFN0YXRlID0gKGtleTogc3RyaW5nIHwgc3RyaW5nW10sIGRlZmF1bHRWYWx1ZT86IGFueSk6IGFueSA9PiB7XG4gIGNvbnN0IHtmbHV4LCBzdGF0ZX0gPSB1c2VDb250ZXh0KEZsdXhDb250ZXh0KTtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IGZsdXg/LmdldFN0YXRlKGtleSwgZGVmYXVsdFZhbHVlKTtcbiAgY29uc3QgW3VwZGF0ZWRWYWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUodmFsdWUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYoIWlzRXF1YWwodmFsdWUsIHJlZi5jdXJyZW50KSkge1xuICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIHNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH0sIFtzdGF0ZV0pO1xuXG4gIHJldHVybiB1cGRhdGVkVmFsdWU7XG59O1xuIl0sIm5hbWVzIjpbImlzRXF1YWwiLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJGbHV4Q29udGV4dCIsInVzZUZsdXhTdGF0ZSIsImtleSIsImRlZmF1bHRWYWx1ZSIsImZsdXgiLCJzdGF0ZSIsInJlZiIsInZhbHVlIiwiZ2V0U3RhdGUiLCJ1cGRhdGVkVmFsdWUiLCJzZXRWYWx1ZSIsImN1cnJlbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVNBLE9BQU8sUUFBUSw4QkFBOEI7QUFDdEQsU0FBU0MsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLFFBQVE7QUFFaEUsU0FBU0MsV0FBVyxRQUFRLG1CQUFtQjtBQUUvQyxPQUFPLE1BQU1DLGVBQWUsQ0FBQ0MsS0FBd0JDO0lBQ25ELE1BQU0sRUFBQ0MsSUFBSSxFQUFFQyxLQUFLLEVBQUMsR0FBR1QsV0FBV0k7SUFDakMsTUFBTU0sTUFBTVIsT0FBTztJQUNuQixNQUFNUyxRQUFRSCxNQUFNSSxTQUFTTixLQUFLQztJQUNsQyxNQUFNLENBQUNNLGNBQWNDLFNBQVMsR0FBR1gsU0FBU1E7SUFFMUNWLFVBQVU7UUFDUixJQUFHLENBQUNGLFFBQVFZLE9BQU9ELElBQUlLLE9BQU8sR0FBRztZQUMvQkwsSUFBSUssT0FBTyxHQUFHSjtZQUNkRyxTQUFTSDtRQUNYO0lBQ0YsR0FBRztRQUFDRjtLQUFNO0lBRVYsT0FBT0k7QUFDVCxFQUFFIn0=