UNPKG

core-native

Version:

A lightweight framework based on React Native + Redux + Redux Saga, in strict TypeScript.

65 lines 2.44 kB
import { __read, __spreadArray } from "tslib"; import React from "react"; import { useDispatch, useSelector } from "react-redux"; import {} from "./reducer"; export function useLoadingStatus(identifier) { if (identifier === void 0) { identifier = "global"; } return useSelector(function (state) { return state.loading[identifier] > 0; }); } /** * Action parameters must be of primitive types, so that the dependency check can work well. * No need add dispatch to dep list, because it is always fixed. */ export function useAction(actionCreator) { var deps = []; for (var _i = 1; _i < arguments.length; _i++) { deps[_i - 1] = arguments[_i]; } var dispatch = useDispatch(); return React.useCallback(function () { return dispatch(actionCreator.apply(void 0, __spreadArray([], __read(deps), false))); }, deps); } /** * For actions like: * *foo(a: number, b: string, c: boolean): SagaGenerator {..} * * useUnaryAction(foo, 100, "") will return: * (c: boolean) => void; */ export function useUnaryAction(actionCreator) { var deps = []; for (var _i = 1; _i < arguments.length; _i++) { deps[_i - 1] = arguments[_i]; } var dispatch = useDispatch(); return React.useCallback(function (arg) { return dispatch(actionCreator.apply(void 0, __spreadArray(__spreadArray([], __read(deps), false), [arg], false))); }, deps); } /** * For actions like: * *foo(a: number, b: string, c: boolean): SagaGenerator {..} * * useBinaryAction(foo, 100) will return: * (b: string, c: boolean) => void; */ export function useBinaryAction(actionCreator) { var deps = []; for (var _i = 1; _i < arguments.length; _i++) { deps[_i - 1] = arguments[_i]; } var dispatch = useDispatch(); return React.useCallback(function (arg1, arg2) { return dispatch(actionCreator.apply(void 0, __spreadArray(__spreadArray([], __read(deps), false), [arg1, arg2], false))); }, deps); } /** * For actions like: * *foo(data: {key: number}): SagaGenerator {..} * * useModuleObjectAction(foo, "key") will return: * (objectValue: number) => void; */ export function useObjectKeyAction(actionCreator, objectKey) { var dispatch = useDispatch(); return React.useCallback(function (objectValue) { var _a; return dispatch(actionCreator((_a = {}, _a[objectKey] = objectValue, _a))); }, [dispatch, actionCreator, objectKey]); } //# sourceMappingURL=hooks.js.map