0

下記のコードを確認してください。EmployeeCreateにログインしてください。dispatch(NavigationActions.navigate({ routeName: 'EmployeeCreate' }));のAuthActions.jsでこれを使用してください。以前は反応ナビゲーションの代わりに「反応ネイティブルータフラックス」を使用していました。反応がネイティブで新しいことを知り、問題を見つけることができませんでした。反応ナビゲーションが反応しないネイティブアクションで動作していません

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リアクションナビゲーションの方法を使用する必要があります。あなたはこれらのいずれかを行うことができます

1)this.props.navigation.dispatch(NavigationActions.navigate({ routeName: 'EmployeeCreate' }))

2)DOまたは()特にあなたの場合にお勧めReduxReact-navigationを統合し、再来のデフォルトdispatchを使用しています。私はちょうどのためにベアボーンのレポを作成しましたreact-navigation + Redux

+0

ありがとう!!最初のオプションは私のために働いていない。私は2番目を試してみる –

関連する問題