отправка не является ошибкой функции - PullRequest
0 голосов
/ 02 мая 2018

Итак, я убедился, что я connect мой mapDispatchToProps правильно и правильно связал функции (я думаю), а также убедился, что опечаток нет.

Но по какой-то причине следующий код, дающий мне отправку, не является ошибкой функции:

import React from 'react';
import {View, Button} from 'react-native';
import { DrawerNavigator, DrawerItems } from 'react-navigation';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';

import aboutScreen from './About';
import settingScreen from './Setting';
import Home from './Home';
import Login from '../../auth/scenes/Login';
import * as authAction from '../../auth/actions';
import * as homeAction from '../actions';

export const mapDispatchToProps = (dispatch) => ({
  actionsHome: bindActionCreators(homeAction, dispatch),
  actionsAuth: bindActionCreators(authAction, dispatch)
});

const CustomDrawerContentComponent = (props) => (
  <View>
     <DrawerItems {...props}/>
     <Button title="Logout" onPress={()=>props.screenProps()}/>
  </View>
);

const Drawer = DrawerNavigator({
    Home: {
      screen: Home
    },
    About: {
      screen: aboutScreen
    },
    Setting:{
      screen: settingScreen
    },
  },
  {
    initialRouteName: 'Home',
    contentComponent: CustomDrawerContentComponent,
    drawerOpenRoute: 'DrawerOpen',
    drawerCloseRoute: 'DrawerClose',
    drawerToggleRoute: 'DrawerToggle'
  }
);

class DrawNav extends React.Component{  
  constructor(){
    super();
    this.onSignOut = this.onSignOut.bind(this);
  }

  onSuccess() {
    this.props.actionsHome.successSignOut();
    Actions.reset("Auth");
  }

  onError(error) {
    Alert.alert('Oops!', error.message);
  }

  onSignOut() {
    this.props.actionsAuth.signOut(this.onSuccess.bind(this),this.onError.bind(this))
  }

  render(){
      return <Drawer screenProps = {this.onSignOut}/>;  
  }
}

export default connect(mapDispatchToProps) (DrawNav);

Я попробовал подобную настройку на моем домашнем компоненте, и это сработало. Это всего лишь копия и вставка из схемы выхода из системы Home, потому что мне нужна кнопка выхода из системы на моем ящике вместо Home.

Может кто-нибудь помочь мне указать, что я здесь упустил?

Заранее спасибо! :)

1 Ответ

0 голосов
/ 02 мая 2018

Try: export default connect(null, mapDispatchToProps) (DrawNav);

mapDispatchToProps должен быть вторым аргументом вашего connect метода.

Параметру, предоставленному первому аргументу функции в connect, будет state, а функции второго аргумента будет dispatch

В вашем примере, поскольку ваш mapDispatchToProps является первым аргументом в connect, он получает state в качестве аргумента. Тогда ваш bindActionCreators попытается вызвать его как функцию, которая вызывает вашу ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...