UNPKG

@td-design/rn-hooks

Version:

从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率

25 lines (21 loc) 853 B
'use strict'; 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;