【发布时间】:2019-09-11 03:56:46
【问题描述】:
我正在尝试重用 Cloudinary 上传小部件的单个实例来从我的 react 应用中的多个位置上传和检索上传的媒体信息?
我可以将不同的 resultCallbacks 传递给 Cloudinary 上传小部件的同一个实例吗?
我正在构建一个反应应用程序,其中不同的文本块与不同的图像相关联。我使用 Cloudinary 上传小部件来处理上传,然后在相应的文本块旁边显示结果。
目前,我正在为每个文本块生成一个 Cloudinary 小部件的新实例,但我意识到这是资源密集型的。
为了解决这个问题,我为上传小部件创建了一个单例,我在其中传递了我想运行的回调函数(我想为每个文本块从 Cloudinary 的上传响应附加一个标识符)。
现在的问题是,一旦创建,我无法动态改变单例的回调。
有没有办法promisify 实例或将动态resultCallback 函数传递给单个实例?
const widget = {
window: null,
type: null,
};
/**
* @class UploadWidget
*/
export default class UploadWidget {
/**
*
* @param {object} options widget options
* @param {string} options.type
* @returns {undefined}
*/
constructor({ cb, type }) {
if (type !== widget.type) {
widget.window = window.cloudinary.createUploadWidget(
{
cloudName: process.env.CLOUD_NAME,
uploadPreset: process.env.UPLOAD_PRESET,
styles: {
palette: {
window: '#FFFFFF',
windowBorder: '#97AB35',
tabIcon: '#4B9960',
menuIcons: '#5A616A',
textDark: '#000000',
textLight: '#FFFFFF',
link: '#FFCC53',
action: '#4B9960',
inactiveTabIcon: '#6D6D6C',
error: '#F44235',
inProgress: '#0078FF',
complete: '#4B9960',
sourceBg: '#FBFBFA',
},
fonts: {
default: null,
"'Fira Sans', sans-serif": {
url: 'https://fonts.googleapis.com/css?family=Fira+Sans',
active: true,
},
},
},
},
cb
);
widget.type = type;
}
return widget.window;
}
}
cb是一个函数,定义如下
function(error, result)
如果成功,error 为 null,如果失败,则为错误消息,而result 是详细说明触发事件的 JSON 对象。
【问题讨论】:
标签: javascript cloudinary