@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
36 lines (35 loc) • 1.15 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _isFunction = _interopRequireDefault(require("lodash/isFunction"));
var _react = require("react");
var _index = require("../helpers/index.js");
var _useDestroyed = _interopRequireDefault(require("./useDestroyed.js"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* useState 类似 this.setState 可以传入部分字段更新
* @param state 状态
*/
const useStateUpdate = state => {
const [localState, setLocalState] = (0, _react.useState)(state);
const getDestroyed = (0, _useDestroyed.default)();
const updateState = (0, _react.useCallback)(s => {
if (!getDestroyed()) {
setLocalState(ls => {
const value = (0, _isFunction.default)(s) ? s(ls) : s;
if ((0, _index.isObject)(ls)) {
return {
...ls,
...value
};
}
return value;
});
}
}, [getDestroyed]);
return [localState, updateState];
};
var _default = exports.default = useStateUpdate;
//# sourceMappingURL=useStateUpdate.js.map
;