react-async-iterators
Version:
The magic of JavaScript async iterators in React ⛓️ 🧬 🔃
23 lines • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useAsyncIterState = useAsyncIterState;
const callOrReturn_js_1 = require("../common/callOrReturn.js");
const useRefWithInitialValue_js_1 = require("../common/hooks/useRefWithInitialValue.js");
const useEffectStrictModeSafe_js_1 = require("../common/hooks/useEffectStrictModeSafe.js");
const AsyncIterableChannel_js_1 = require("../common/AsyncIterableChannel.js");
function useAsyncIterState(initialValue) {
const ref = (0, useRefWithInitialValue_js_1.useRefWithInitialValue)(() => {
const initialValueCalced = (0, callOrReturn_js_1.callOrReturn)(initialValue);
const channel = new AsyncIterableChannel_js_1.AsyncIterableChannel(initialValueCalced);
return {
channel,
result: [channel.out, newVal => channel.put(newVal)],
};
});
const { channel, result } = ref.current;
(0, useEffectStrictModeSafe_js_1.useEffectStrictModeSafe)(() => {
return () => channel.close();
});
return result;
}
//# sourceMappingURL=index.js.map