@td-design/rn-hooks
Version:
从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率
29 lines (26 loc) • 1.21 kB
JavaScript
import { __read } from '../_virtual/_tslib.js';
import { useState } from 'react';
import useMemoizedFn from '../useMemoizedFn/index.js';
/**
* 用于在两个状态值间切换的 Hook。
* @param defaultValue 默认值,默认为false
* @param reverseValue 切换值,可以不传,不传的时候值是对默认值取非
* @returns
*/
function useToggle(defaultValue, reverseValue) {
if (defaultValue === void 0) { defaultValue = false; }
var _a = __read(useState(defaultValue), 2), state = _a[0], setState = _a[1];
var reverseValueOrigin = (reverseValue === undefined ? !defaultValue : reverseValue);
var toggle = function () { return setState(function (s) { return (s === defaultValue ? reverseValueOrigin : defaultValue); }); };
var set = function (value) { return setState(value); };
var setLeft = function () { return setState(defaultValue); };
var setRight = function () { return setState(reverseValueOrigin); };
var actions = {
toggle: useMemoizedFn(toggle),
set: useMemoizedFn(set),
setLeft: useMemoizedFn(setLeft),
setRight: useMemoizedFn(setRight),
};
return [state, actions];
}
export { useToggle as default };