@td-design/rn-hooks
Version:
从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率
25 lines (21 loc) • 853 B
JavaScript
;
var _tslib = require('../_virtual/_tslib.js');
var react = require('react');
var index$1 = require('../useMemoizedFn/index.js');
var index = require('../useUnmountedRef/index.js');
/**
* 用法与 useState 完全一样,但是在组件卸载后 setState 不再执行,避免因组件卸载后更新状态而导致的内存泄漏。
* @param initialState 初始值
*/
function useSafeState(initialState) {
var unmountedRef = index();
var _a = _tslib.__read(react.useState(initialState), 2), state = _a[0], setState = _a[1];
var setCurrentState = function (currentState) {
// 如果组件已经卸载了,则不要再做 setState 的操作
if (unmountedRef.current)
return;
setState(currentState);
};
return [state, index$1(setCurrentState)];
}
module.exports = useSafeState;