@td-design/rn-hooks
Version:
从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率
45 lines (41 loc) • 1.22 kB
JavaScript
;
var _tslib = require('../_virtual/_tslib.js');
var react = require('react');
var index = require('../useMemoizedFn/index.js');
/**
* 一个可以管理 Map 类型状态的 Hook。
* @param initialValue 初始值
* @returns
*/
function useMap(initialValue) {
var getInitValue = function () { return new Map(initialValue); };
var _a = _tslib.__read(react.useState(getInitValue), 2), map = _a[0], setMap = _a[1];
var set = function (key, entry) {
setMap(function (prev) {
var temp = new Map(prev);
temp.set(key, entry);
return temp;
});
};
var setAll = function (newMap) {
setMap(new Map(newMap));
};
var remove = function (key) {
setMap(function (prev) {
var temp = new Map(prev);
temp.delete(key);
return temp;
});
};
var reset = function () { return setMap(getInitValue()); };
var get = function (key) { return map.get(key); };
var actions = {
set: index(set),
setAll: index(setAll),
remove: index(remove),
reset: index(reset),
get: index(get),
};
return [map, actions];
}
module.exports = useMap;