Преобразование круговой структуры в JSON-реактивную навигацию с помощью Firebase
Хе, ребята.. я пытаюсь использовать реактивную навигацию и FireBase в моем проекте. Я использую этот удивительный шаблон: -
https://github.com/jhen0409/react-native-boilerplate
в моем navigator.js
import { StackNavigator } from 'react-navigation';
import Home from './containers/Home';
import MainScreen from './containers/MainScreen';
import HelpScreen from './containers/HelpScreen';
const AppNavigator = new StackNavigator(
{
Home: { screen: Home },
MainScreen: { screen: MainScreen },
HelpScreen: { screen: HelpScreen }
},
{
headerMode: 'screen'
},
);
export default AppNavigator;
а затем в моем посадочном экране, который является Home.js
@firebaseConnect()
@connect(
state => ({
nav: state.nav.routes
}),
dispatch => bindActionCreators(userActions, dispatch),
)
export default class Home extends Component {
componentDidMount() {
this.props.firebase.auth().onAuthStateChanged( user => {
if(user) {
//check route stack in redux store
if(this.props.nav[this.props.nav.length-1].routeName !== 'MainScreen') {
this.props.navigation.navigate('MainScreen');
}
this.props.firebase.updateProfile({ lastLogin: new Date() });
user.getIdToken().then( t => this.props.userToken(t) );
} else {
this.props.firebase.auth().signInAnonymously()
.then((user) => {
console.log('user successfully sign in anonymously', user);
// Insert user record to firebase
this.props.firebase.updateProfile(
{
name: 'Anonymous'
}
)
})
.catch(
(error) => {
console.log('error ', error)
})
}
})
}
render() {
return (
<View />
);
}
}
и внутри моего MainScreen.js
@firebaseConnect(['/helpDetails'])
@connect(
(state, props) => {
return({
})
}
)
export default class MainScreen extends Component {
logout = () => {
this.props.navigation.goBack();
this.props.firebase.logout();
console.log('logout!');
}
render() {
return (
<View style={{ flex: 1 }}>
<TouchableOpacity onPress={() => this.logout()}>
<Text>LOG OUT</Text>
</TouchableOpacity/>
</View>
)
}
}
все идет хорошо, когда пользователь открывает приложения... но он начинает давать этот красный экран, когда я нажимаю на выход из системы... если я изменяю firebaseConnect внутри Mainscreen из
@firebaseConnect(['/helpDetails'])
К
@firebaseConnect([])
тогда все работает нормально..
Может ли кто-нибудь помочь мне, что я здесь делаю не так? Спасибо!
1 ответ
Я думаю, что это проблема не вас, а библиотеки. У меня такая же проблема. Слава богу, это происходит только в режиме разработчика (в релизе все работает нормально). Когда я пробую это без devtools, это работает. По моему мнению, response-redux-firebase делает некоторые странные вещи при выходе из системы и создает (возможно, всего на одну секунду) круговую JSON-структуру. В самом JavaScript это не является большой проблемой, но когда вы хотите его упорядочить (что делается для отображения в ваших devtools), тогда круговая структура не может быть преобразована в строку. Надеюсь увидеть исправление для разработчиков в ближайшее время.
Связанная проблема: проблема GitHub реагирует на редукс-огонь