首页 > 解决方案 > 使用 Redux Saga 通过 Firebase 存储检索上传的文件时出现问题

问题描述

我在应用程序中使用redux sagawith 。firebase当我需要使用 firebase 存储并且需要获取刚刚上传的文件的下载 URL 时:

这不起作用

yield call (uploadTask.snapshot.ref.getDownloadURL);

但这项工作

yield call (() => uploadTask.snapshot.ref.getDownloadURL());

谁能帮我理解为什么第一个选项不起作用?我不明白这些方法之间的区别:)

标签: firebasereduxfirebase-storageredux-saga

解决方案


它们之间的区别在于thisgetDownloadURL 运行后的值。第一个版本将具有this等于窗口对象(在非严格模式下)或未定义(在严格模式下),而后者将具有this等于uploadTask.snapshot.ref.

call效果确实有几个重载可以让您指定this. 您可以在此处看到它们,但一个示例是将数组作为第一个参数传递,如下所示:

yield call([uploadTask.snapshot.ref, uploadTask.snapshot.ref.getDownloadURL])

推荐阅读