#javascript #firebase #react-native #react-redux
#javascript #firebase #react-native #react-redux
Вопрос:
Я пытаюсь реализовать постоянный вход в систему для своего приложения. Я столкнулся с ошибкой
Приложение Firebase «[ПО УМОЛЧАНИЮ]» не создано — вызовите Firebase App.initializeApp() (приложение / no-app)
Я попытался решить это, изучив существующие проблемы, но не совсем вписывается в этот вариант использования. Я инициализировал свою firebase из App.js а затем после перехода к заставке (AuthStack на основе состояния) Я вызываю создателя действия из componentDidMount внутри заставки. В этом создателе действия я проверяю состояние аутентификации (если пользователь возвращает значение, отличное от null, я обновляю состояние для перехода в AppStack).
App.js
class App extends Component {
componentDidMount() {
const firebaseConfig = {
apiKey: 'AIzaSyDOpO3TjIN4lCCufMZWKs7eZYd86SJB0o8',
authDomain: 'vocabs-a3f7e.firebaseapp.com',
databaseURL: 'https://vocabs-a3f7e.firebaseio.com',
projectId: 'vocabs-a3f7e',
storageBucket: 'vocabs-a3f7e.appspot.com',
messagingSenderId: '938659592890',
appId: '1:938659592890:web:7d309f3751892982066083',
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
}
render() {
return (
<Provider store={createStore(reducers, {}, applyMiddleware(ReduxThunk))}>
<NavigationContainer>
<MainRoute />
</NavigationContainer>
</Provider>
);
}
Заставка
class SplashScreen extends Component {
componentDidMount() {
setTimeout(this.renderSignInForm, 1000);
//this.renderSignInForm();
}
renderSignInForm = () => {
console.log('inside async');
this.props.persistantSignIn();
//const userData = this.checkUser();
if (this.props.userData) {
console.log('hit user true' this.props.userData);
} else {
// No user is signed in.
console.log('hit user false' this.props.userData);
this.props.navigation.navigate('SignInForm');
}
};
render(){
return(
/*some Code Here*/
);
}
ActionCreator
export const persistantSignIn = () => {
return (dispatch) => {
firebase
.auth()
.onAuthStateChanged.then((userData) => {
console.log(userData);
dispatch({
type: PERSISTANT_SIGN_IN,
payload: userData,
});
})
.catch((error) => {
console.log('something is wronggggggggg');
throw error;
});
};
};
MainRoute.js
class MainRoute extends Component {
render() {
return this.props.isSignedIn ? <AppStack /> : <AuthStack />;
}
}