#react-native
#реагировать-родной
Вопрос:
В приложении react native я использую firebase Google Analytics.
Проблема заключается в отслеживании экранов, я перехожу по этой ссылке, однако у меня возникает эта ошибка.
TypeError: (0 , _analytics.analytics) is not a function).
И скриншот.
Мой файл appcontainer (drawer.js ) :
import { createDrawerNavigator } from 'react-navigation-drawer';
import { createAppContainer } from 'react-navigation';
import Feed from '../components/Home';
import {FeedStack} from './stack';
import React, { Component } from 'react';
import {analytics }from '@react-native-firebase/analytics';
const MyDrawerNavigator = createDrawerNavigator(
{
Feed: FeedStack
},
);
function getActiveRouteName(navigationState) {
if (!navigationState) {
return null;
}
const route = navigationState.routes[navigationState.index];
if (route.routes) {
return getActiveRouteName(route);
}
return route.routeName;
}
const AppContainer =createAppContainer(MyDrawerNavigator);
export default () => {
return <AppContainer
onNavigationStateChange={(prevState, currentState, action) => {
const currentRouteName = getActiveRouteName(currentState);
const previousRouteName = getActiveRouteName(prevState);
if (previousRouteName !== currentRouteName) {
analytics().setCurrentScreen(currentRouteName, currentRouteName);
}
}}
/>
}
Мой app.js :
import Feed from './src/components/Home';
import HomePage from './src/components/homeEpaper';
import Navigator from './src/navigator/drawer';
import React, { Component } from 'react';
export default function App() {
return (
<Navigator />
)
}
Я попытался также импортировать аналитику из «@react-native-firebase / analytics»;
и я получил эту ошибку. скриншот
Ответ №1:
если вы используете setCurrentScreen
метод, то вам необходимо использовать следующее
package.jsom
"@react-native-firebase/analytics": "^10.4.0",
"@react-native-firebase/app": "^10.4.0",
Неверно
import analytics from '@react-native-firebase/analytics';
.
.
.
analytics().setCurrentScreen('SignUpScreen');`
Правильно
import analytics from '@react-native-firebase/analytics';
.
.
.
// Google Firebase Analytics
analytics().logScreenView({
screen_name: 'SignUpScreen',
screen_class: 'SignUpScreen'
});
Ответ №2:
Я думаю, что вы не на 100% точно следовали документам 🙂
В вашем коде вы делаете:
import {analytics }from '@react-native-firebase/analytics';
Однако, если вы посмотрите на этот файл: https://github.com/invertase/react-native-firebase/blob/master/packages/analytics/lib/index.js вы увидите, что именованная аналитика экспорта отсутствует. Что вы делаете при вводе import {analytics}
, так это импортируете именованный экспорт: https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export
Поскольку в этом файле нет именованной аналитики экспорта, значение для аналитики не определено, и вы получаете описанную вами ошибку.
Я должен ввести (как написано в связанном примере):
import analytics from '@react-native-firebase/analytics';
Комментарии:
1. Я попробовал это, и я получил аналогичную ошибку, можете ли вы проверить выше, я приложил скриншот?
2. Используемая вами версия analytics больше не имеет функции setCurrentScreen. Вместо этого вы должны использовать logScreenView github.com/invertase/react-native-firebase/commit /… «analytics().logScreenView({ screen_class: screenName, screen_name: screenName, }) «
3. Хорошо, спасибо, ошибка исчезла, я подожду 24 часа, чтобы увидеть, появятся ли экраны в консоли Google.
4. Круто! Не забудьте отметить как «ответ», если все хорошо 🙂
Ответ №3:
В новом обновлении setCurrentScreen
больше нет. Используйте другие функции для регистрации.