@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
69 lines (62 loc) • 1.78 kB
JavaScript
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import React, { useEffect, memo } from 'react';
import { callInterceptor } from '../helpers';
import useState from '../hooks/useStateUpdate';
import Dialog from './dialog';
/**
* Dialog 弹出框
* @description 配合函数的使用
*/
const DialogMethod = _ref => {
let {
beforeClose,
callback,
...restProps
} = _ref;
const [state, setState] = useState({
visible: false,
cancel: false,
confirm: false,
overlay: false
});
const genOnPressBtn = action => () => {
setState({
[action]: true
});
callInterceptor(beforeClose, {
args: [action],
done: () => {
callback(action);
setState({
[action]: false,
visible: false
});
},
canceled: () => {
setState({
[action]: false
});
}
});
};
useEffect(() => {
setState({
visible: true
});
}, []);
const onRequestClose = () => {
genOnPressBtn('overlay')();
return true;
};
return /*#__PURE__*/React.createElement(Dialog, _extends({}, restProps, {
onRequestClose: onRequestClose,
visible: state.visible,
onPressConfirm: genOnPressBtn('confirm'),
onPressCancel: genOnPressBtn('cancel'),
onPressOverlay: genOnPressBtn('overlay'),
cancelButtonLoading: state.cancel,
confirmButtonLoading: state.confirm
}));
};
export default /*#__PURE__*/memo(DialogMethod);
//# sourceMappingURL=dialog-method.js.map