@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
31 lines (30 loc) • 850 B
JavaScript
;
import isFunction from 'lodash/isFunction';
import { useState, useCallback } from 'react';
import { isObject } from "../helpers/index.js";
import useDestroyed from "./useDestroyed.js";
/**
* useState 类似 this.setState 可以传入部分字段更新
* @param state 状态
*/
const useStateUpdate = state => {
const [localState, setLocalState] = useState(state);
const getDestroyed = useDestroyed();
const updateState = useCallback(s => {
if (!getDestroyed()) {
setLocalState(ls => {
const value = isFunction(s) ? s(ls) : s;
if (isObject(ls)) {
return {
...ls,
...value
};
}
return value;
});
}
}, [getDestroyed]);
return [localState, updateState];
};
export default useStateUpdate;
//# sourceMappingURL=useStateUpdate.js.map