我正在我的react-native项目上创建一个JS测试.我特意使用firebase for react native,如果JS运行我的类的代码,我想用mockfirebase实例替换firebase实例.
例如,我有类似下面的类设置.
import firebase from 'react-native-firebase';
class Database() {
/// use the firebase instance
}
Run Code Online (Sandbox Code Playgroud)
我想检查jest是否是运行环境,然后我用适当的模拟类替换导入行.
我正在尝试将以前使用实时数据库的 firebase 实现转换为使用 firestore,因为我喜欢集合的想法和使用它的好处。
我如何在下面实现 Firestore 等价物?
firebase.database().ref('documentPath').push()
Run Code Online (Sandbox Code Playgroud) 我已经设法将Google日历嵌入到React组件中,但是问题是我可以观察到嵌入式日历没有获得最新事件,该事件已添加到通过验证的电子邮件中gapi。
日历iframe网址是这个 https://calendar.google.com/calendar/b/1/embed?src={VALID_CALENDAR_EMAIL}
calendar.util.js
const CALENDAR_EMBED_BASE_URL =
'https://calendar.google.com/calendar/embed?src=';
export const getCalendarEmbedUrl = email =>
`${CALENDAR_EMBED_BASE_URL}${email}`;
Run Code Online (Sandbox Code Playgroud)
CalendarIframe.jsx组件
import React, { PureComponent } from 'react';
import { getCalendarEmbedUrl } from 'calendar.util.js';
class CalendarIframe extends PureComponent {
render() {
const { email } = this.props;
const embedUrl = getCalendarEmbedUrl(email);
return (
<div className="calendarEmbedWrapper">
<iframe
title="Calendar"
id="calendarEmbed"
width="100%"
src={embedUrl}
/>
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
如何确保嵌入式日历具有应有的动态性?
我已经实现了一个自定义 PDFView,可以从云端加载 pdf 文件,也可以在本地加载 pdf 文件(如果可用)。对于本地实例,正如预期的那样,所有内容都加载得很快,但是当 url 不是本地的(即来自服务器的)时,可能需要一段时间,我想在 PDFView 加载文件时添加 UIActivityIndicator,有没有办法让我们知道一个代表或一个通知来监听以跟踪这一情况?
我的实现基本上如下所示:
let url = ReportsRepository.shared.getReportUrl(id: "1234")
self.pdfView.document = PDFDocument(url: url)
Run Code Online (Sandbox Code Playgroud)
此后,如果 URL 来自服务器,则应用程序似乎冻结,因此我需要在此处添加 UIActivityIndicator,问题是如何使用 PDFKit 停止它?
我已经设置了一个 Http Cloud Function 作为预订系统的后端。此函数从 Cloud Firestore 访问数据,检索现有的预订时间并检查预订是否与现有时间重叠。如果只能触发请求的一个并发实例,那么这不会有问题,但是我注意到,当同时从多个源请求同一函数时,该函数将以某种基于并行的方式运行这些多个请求在我的日志上。
下面是我的函数的片段:
exports = module.exports = functions.https.onCall(async (data, context) => {
const { stand_id, user_id, reservation } = data;
const isReservationValid = await checkAvailability(reservation, stand_id);
if (!isReservationValid) {
throw new functions.https.HttpsError('aborted', 'Errr');
}
return await createReservation(stand_id, user_id, reservation);
});
Run Code Online (Sandbox Code Playgroud)
如果我调用这个函数并传入相同的stand_id和重叠的保留时间,就会出现问题,我注意到该函数不会等待第一个被调用的函数完成后再开始后续请求。
当在真实的 iPhone 设备而不是模拟器上运行debug方案时,我注意到 Metrobundler 不会被触发加载 JS 更改。
我可以摇动设备,然后会弹出重新加载、外部调试等选项。但每当我选择任何选项时,应用程序都会冻结,然后在几秒钟或几分钟后显示以下错误
\n\n[RCTCxxBridge.mm:1080] Timed out waiting for modules to be invalidated\nRun Code Online (Sandbox Code Playgroud)\n\n造成这种情况最可能的原因是什么?我似乎找不到其他人有同样的问题。
\n\n我的环境:
\n\nREACT: "16.8.3"\nREACT-NATIVE: "0.59.2"\nNPM: 6.9.0\nNODE: v10.16.0\n\nRun Code Online (Sandbox Code Playgroud)\n\n即使在摇晃后尝试执行任何选项后,这也是 Metrobundler 所在的位置。
\n\n> ReactNativePlatform@0.0.1 start /Users/joselitonarte/Documents/Fun/RN/myapp\n> node node_modules/react-native/local-cli/cli.js start "--reset-cache"\n\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 \xe2\x94\x82\n\xe2\x94\x82 Running Metro Bundler on port 8081. \xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\n\xe2\x94\x82 Keep Metro running while developing on any JS projects. Feel free to \xe2\x94\x82\n\xe2\x94\x82 close this tab and run your own Metro instance if you prefer. \xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\n\xe2\x94\x82 …Run Code Online (Sandbox Code Playgroud)