آموزش جاوااسکریپت › انجمن ها › react native › undefined is not a function (evaluating 'navigation.dispatch')
برچسب ها: redux react-navigation ریداکس
- این موضوع 4 پاسخ، 2 کاربر را دارد و آخرین بار در 5 سال، 2 ماه پیش بدست UKbed990 بهروزرسانی شده است.
-
نویسندهنوشتهها
-
UKbed990مشارکت کننده
سلام. کدی که نوشتم قراره بعد از اینکه کاربر روی logout رو انتخاب کرد، وارد صفحه اول اپلیکیشن بشه. ولی با ارور زیر مواجه میشم:
undefined is not a function (evaluating ‘navigation.dispatch’)
کد اکشن کریتور:JavaScript12345678910111213import {NavigationActions} from 'react-navigation';import {AsyncStorage} from 'react-native';import {applyMiddleware as dispatch} from "redux";export const userRemove = (navigation) => {AsyncStorage.removeItem('user');const navigateAction = NavigationActions.navigate({routeName: 'First',props: {}});navigation.dispatch(navigateAction);};من این اکشن رو از کامپوننت ساید بار صدا میزنم که کدش اینجاست:
JavaScript1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import React, {Component} from 'react';import {Container,Content,Footer,FooterTab,Button,Icon} from 'native-base';import {userRemove} from '../actions/sideBarAction';import {connect} from "react-redux";import {bindActionCreators} from "redux";class SideBar extends Component {constructor(props) {super(props);}logout() {userRemove(this.props.navigation);}render() {return (<Container><Content>...</Content><Footer><FooterTab><Button onPress={this.logout.bind(this)}><Icon name="logout"/></Button></FooterTab></Footer></Container>)}}const mapStateToProps = state => {return {username: state.home.username,password: state.home.password,score: state.home.score,}};const mapDispatchToProps = dispatch => {return Object.assign({dispatch: dispatch},bindActionCreators(userRemove, dispatch));};connect(mapStateToProps, mapDispatchToProps)(SideBar);از اونجایی که asyncStorage به درستی پاک میشه، پس کامپوننت درست کار میکنه اما وقتی navigation رو توی کامپوننت و اکشن کریتور لاگ میگیرم، بصورت undefined نشون میده. لطفا راهنمایی کنین. خیلی کارم گره خورده. سعی کردم طبق مثال های سایت پیش برم.
درضمن لینک سوالم تو stackoverflow هم قرار میدم:
لینک stackoverflow
پیشاپیش ممنون از پاسختونمهدیمیهمانسلام.کتابخونه react navigation به روز شده و شاید بغضی methode ها تغییر کرده باشند و یا کلا حذف و جایگزینی براشون معرفی شده.داکیومنت جدید کتابخونه رو مطالعه کنید
UKbed990مشارکت کنندهسلام. مشکل با withNavigation حل شد.
جزئیات راه حل توی لینک stackoverflow که تو متن سوال گذاشتم، قابل مشاهده ست.
پیروز باشیدمهدیمیهمانجزئیات راه حل رو اینجا هم بزارید
UKbed990مشارکت کنندهYou can also wrap your component with withNavigation function from react-navigation. That will make sure you have valid navigation prop.
JavaScript12345import { withNavigation } from react-navigation;...connect(mapStateToProps, mapDispatchToProps)(withNavigation(SideBar));Alternatively, you may pass this.props.navigation from parent component too.
-
نویسندهنوشتهها