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