@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
77 lines (76 loc) • 2.44 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
customEvents: function() {
return customEvents;
},
useCustomEvent: function() {
return useCustomEvent;
},
useCustomEventsPath: function() {
return useCustomEventsPath;
},
useParams: function() {
return useParams;
}
});
var _interop_require_default = require("@swc/helpers/_/_interop_require_default");
var _object_spread = require("@swc/helpers/_/_object_spread");
var _react = require("react");
var _reactfastcompare = /*#__PURE__*/ _interop_require_default._(require("react-fast-compare"));
var _taro = require("@tarojs/taro");
var _useforceupdate = require("../use-force-update");
var customEvents = new _taro.Events();
function useCustomEventsPath(selector) {
var _getCurrentInstance_router;
selector = selector || '';
var path = (_getCurrentInstance_router = (0, _taro.getCurrentInstance)().router) === null || _getCurrentInstance_router === void 0 ? void 0 : _getCurrentInstance_router.path;
return path ? "".concat(path, "__").concat(selector) : selector;
}
function useCustomEvent(selector, cb) {
var path = useCustomEventsPath(selector);
(0, _react.useEffect)(function() {
customEvents.on(path, cb);
return function() {
customEvents.off(path);
};
}, []);
var trigger = function trigger(args) {
customEvents.trigger(path, args);
};
var off = function off() {
customEvents.off(path);
};
return [
trigger,
off
];
}
function useParams(args) {
var forceUpdate = (0, _useforceupdate.useForceUpdate)();
var stateRef = (0, _react.useRef)(args);
var currentRef = (0, _react.useRef)();
var previousRef = (0, _react.useRef)();
if (!(0, _reactfastcompare.default)(currentRef.current, args)) {
previousRef.current = currentRef.current;
currentRef.current = args;
stateRef.current = args;
}
var setParams = function setParams(args) {
stateRef.current = (0, _object_spread._)({}, stateRef.current, args);
forceUpdate();
};
var params = stateRef.current;
return {
params: params,
setParams: setParams
};
}
;