ayanami
Version:
A better way to react with state
16 lines (15 loc) • 663 B
JavaScript
import * as React from 'react';
import get from 'lodash/get';
import { combineWithIkari } from '../core';
import { useSubscribeAyanamiState } from './use-subscribe-ayanami-state';
export function useAyanamiInstance(ayanami, config) {
const ikari = React.useMemo(() => combineWithIkari(ayanami), [ayanami]);
const state = useSubscribeAyanamiState(ayanami, config ? config.selector : undefined);
React.useEffect(() => () => {
const isDestroyWhenUnmount = get(config, 'destroyWhenUnmount', false);
if (isDestroyWhenUnmount) {
ayanami.destroy();
}
}, [ayanami, config]);
return [state, ikari.triggerActions];
}