@td-design/rn-hooks
Version:
从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率
43 lines (40 loc) • 1.16 kB
JavaScript
import { __read } from '../_virtual/_tslib.js';
import { useState } from 'react';
import useMemoizedFn from '../useMemoizedFn/index.js';
/**
* 一个可以管理 Set 类型状态的 Hook。
* @param initialValue 初始值
* @returns
*/
function useSet(initialValue) {
var getInitValue = function () { return new Set(initialValue); };
var _a = __read(useState(getInitValue), 2), set = _a[0], setSet = _a[1];
var add = function (key) {
if (set.has(key)) {
return;
}
setSet(function (prevSet) {
var temp = new Set(prevSet);
temp.add(key);
return temp;
});
};
var remove = function (key) {
if (!set.has(key)) {
return;
}
setSet(function (prevSet) {
var temp = new Set(prevSet);
temp.delete(key);
return temp;
});
};
var reset = function () { return setSet(getInitValue()); };
var actions = {
add: useMemoizedFn(add),
remove: useMemoizedFn(remove),
reset: useMemoizedFn(reset),
};
return [set, actions];
}
export { useSet as default };