在react-navigation-redux-helpers@2.0.0中已弃用createReduxBoundAddListener!请改用reduxifyNavigator

时间:2018-10-02 07:24:12

标签: react-native redux react-navigation

我正在使用react-navigation和redux在屏幕之间导航,但是却出现错误。

  

永久违反:createReduxBoundAddListener已弃用   react-navigation-redux-helpers@2.0.0!请使用reduxifyNavigator

我不知道如何解决它,请帮帮我。

App.js

 import React from 'react';
 import { Provider } from "react-redux";
 import store from "./src/redux/store"      
 import { createReduxBoundAddListener } from "react- navigation-redux-helpers";
 import AppWithNavigationState from "./src/navigators/AppNavigator";

export default class App extends React.Component {
 render() {
  return (
   <Provider store={store}>

      //Here Im getting an error regarding creacteReduxBoundAddListener

     <AppWithNavigationState listener{createReduxBoundAddListener("root")}/>
   </Provider>
  );
 }
}

AppNavigator.js文件

import React, { Component } from 'react';
import { View, Text } from 'react-native';
import {connect} from "react-redux";
import {PropTypes} from 'prop-types';
import {addNavigationHelpers,createStackNavigator } from "react-navigation";
import LoggedOut from "../screens/LoggedOut";
import LogIn from "../screens/Login";
import ForgotPassword from "../screens/ForgotPassword";

// created screens using createStackNavigator

export const AppNavigator = createStackNavigator({
  LoggedOut:{screen:LoggedOut},
  LogIn:{screen:LogIn},
  ForgotPassword:{screen:ForgotPassword},

});

const AppWithNavigationState = ({ dispatch,nav,listener}) =>{
  <AppNavigator navigation= 
  {addNavigationHelpers({dispatch,state:nav,addListener:listener})}/>
};

AppWithNavigationState.propTypes = {
  dispatch:PropTypes.func.isRequired,
  nav:PropTypes.object.isRequired
};

const mapStateToProps = state =>({
  nav:state.nav,
});

export default connect(mapStateToProps)(AppWithNavigationState);

navigation.js

import {AppNavigator} from "../../navigators/AppNavigator";


const firstAction = 
AppNavigator.router.getActionForPathAndParams("LoggedOut");  //decide which 
                                                             //screen will 
                                                             //load first

const initialNavState = AppNavigator.router.getStateForAction(firstAction);

export const nav = (state=initialNavState, action)=>{
  let nextState = AppNavigator.router.getStateForAction(action,state);
  return nextState || state;
}

1 个答案:

答案 0 :(得分:0)

您可以查看此仓库https://github.com/JaiDeves/AirBnB-React,我已经使用较新版本的react-navigation更新了代码。