0

아래 코드를 확인하십시오. 로그인 성공 후 EmployeeCreate로 이동해야합니다. 내 AuthActions.js에 dispatch(NavigationActions.navigate({ routeName: 'EmployeeCreate' }));에서 이것을 사용하십시오. 하지만 작동하지 않습니다. 이전에 나는 반응 네비게이션 대신 '반응 네이티브 라우터 플럭스'를 사용했습니다. 새로운 네이티브 반응을 보이며 문제를 찾을 수 없습니다.반응 네이티브 동작에서 반응 네비게이션이 작동하지 않습니다.

App.js

import React, { Component } from 'react'; 
import { Provider } from 'react-redux'; 
import { createStore, applyMiddleware } from 'redux'; 
import firebase from 'firebase'; 
import ReduxThunk from 'redux-thunk'; 
import reducers from './reducers'; 
import Router from './Router'; 

class App extends Component { 
componentWillMount() { 
const config = { 
apiKey: "###", 
authDomain: "###", 
databaseURL: "###", 
projectId: "###", 
storageBucket: "###, 
messagingSenderId: "0000000" 
}; 

firebase.initializeApp(config); 
} 

render() { 
    const store = createStore(reducers, {}, applyMiddleware(ReduxThunk)); 

return (
    <Provider store={store}> 
    <Router /> 
    </Provider> 
); 
} 
} 

export default App; 

Router.js

import React from 'react'; 
import { StackNavigator} from 'react-navigation'; 
import LoginForm from './components/LoginForm'; 
import EmployeeList from './components/EmployeeList'; 
import EmployeeCreate from './components/EmployeeCreate'; 
import EmployeeEdit from './components/EmployeeEdit'; 


const RouterComponent = StackNavigator({ 
    LoginForm : {screen : LoginForm}, 
EmployeeCreate : {screen :EmployeeCreate}, 
    EmployeeEdit:{screen:EmployeeEdit}, 
}, 
{ 
    headerMode : 'none', 
    navigationOptions:{ 
    headerVisible : false, 
} 
} 
) 
export default RouterComponent; 

AuthActions.js

import firebase from 'firebase'; 
    import { NavigationActions } from 'react-navigation' 
    import { 
     EMAIL_CHANGED, 
     PASSWORD_CHANGED, 
     LOGIN_USER_SUCCESS, 
     LOGIN_USER_FAIL, 
     LOGIN_USER 
    } from './types'; 

    export const emailChanged = (text) => { 
     return { 
     type: EMAIL_CHANGED, 
     payload: text 
     }; 
    }; 

    export const passwordChanged = (text) => { 
     return { 
     type: PASSWORD_CHANGED, 
     payload: text 
     }; 
    }; 

    export const loginUser = ({ email, password }) => { 
     return (dispatch) => { 
     dispatch({ type: LOGIN_USER }); 

     firebase.auth().signInWithEmailAndPassword(email, password) 
      .then(user => loginUserSuccess(dispatch, user)) 
      .catch((error) => { 
      console.log(error); 

      firebase.auth().createUserWithEmailAndPassword(email, password) 
       .then(user => loginUserSuccess(dispatch, user)) 
       .catch(() => loginUserFail(dispatch)); 
      }); 
     }; 
    }; 

    const loginUserFail = (dispatch) => { 
     dispatch({ type: LOGIN_USER_FAIL }); 
    }; 

    const loginUserSuccess = (dispatch, user) => { 
     dispatch({ 
     type: LOGIN_USER_SUCCESS, 
     payload: user 
     }); 
    dispatch(NavigationActions.navigate({ routeName: 'EmployeeCreate' })); 
    }; 

AuthReducer.js

import { 
    EMAIL_CHANGED, 
    PASSWORD_CHANGED, 
    LOGIN_USER_SUCCESS, 
    LOGIN_USER_FAIL, 
    LOGIN_USER 
    } from '../actions/types'; 

    const INITIAL_STATE = { 
    email: '', 
    password: '', 
    user: null, 
    error: '', 
    loading: false 
    }; 

    export default (state = INITIAL_STATE, action) => { 
    switch (action.type) { 
     case EMAIL_CHANGED: 
     return { ...state, email: action.payload }; 
     case PASSWORD_CHANGED: 
     return { ...state, password: action.payload }; 
     case LOGIN_USER: 
     return { ...state, loading: true, error: '' }; 
     case LOGIN_USER_SUCCESS: 
     return { ...state, ...INITIAL_STATE, user: action.payload }; 
     case LOGIN_USER_FAIL: 
     return { ...state, error: 'Authentication Failed.', password: '', loading: false }; 
     default: 
     return state; 
    } 
    }; 

답변

0

당신은 dispatch Redux의 방법을 사용하고 있습니다. 대신에 dispatch React-navigation 방법을 사용해야합니다. 당신은 다음 중 하나를 수행 할 수

1)

2 this.props.navigation.dispatch(NavigationActions.navigate({ routeName: 'EmployeeCreate' }))를 수행) 또는 ReduxReact-navigation 통합 (특히 경우에 권장)하고 돌아 오는의 기본 dispatch을 사용합니다. barebones repo를 만들었습니다. react-navigation + Redux

+0

감사합니다 !! 첫 번째 옵션은 나를 위해 작동하지 않습니다. 두 번째 시도해 보겠습니다. –