linkmore-design
Version:
🌈 🚀lm组件库。🚀
53 lines (49 loc) • 1.32 kB
JavaScript
import { useCallback, useEffect, useMemo } from 'react';
import { getCroppedImg } from "../utils";
// 仅支持单个文件(多文件待扩展)
var useCoreOptions = function useCoreOptions(_ref) {
var state = _ref.state,
dispatch = _ref.dispatch,
props = _ref.props;
var file = props.file;
// 本地文件URL
var imgURL = useMemo(function () {
return file && window.URL.createObjectURL(file);
}, [file]);
// 设置transform参数
var setTransform = useCallback(function (obj) {
dispatch({
type: 'changeResult',
result: obj
});
}, [dispatch]);
// 获取裁剪后的图片
var getCropImageAsync = useCallback(function () {
try {
return getCroppedImg(imgURL, state.croppedAreaPixels, state.rotation);
} catch (e) {
console.error('getCropImageAsync图片获取失败!', e);
return null;
}
}, [imgURL, state.croppedAreaPixels, state.rotation]);
useEffect(function () {
dispatch({
type: 'changeInit',
init: {
visible: !!file
}
});
}, [file]);
var CoreMethds = {
setTransform: setTransform,
getCropImageAsync: getCropImageAsync
};
var RefMethods = {
imgURL: imgURL
};
return {
CoreMethds: CoreMethds,
RefMethods: RefMethods
};
};
export default useCoreOptions;