2017-05-23 80 views
0

我試圖讓登錄,當isLoggedIn = true然後導航到Profile,但總是給我錯誤反應導航導航到其他屏幕

不確定是不是一個對象(計算「_this.props.navigation」)

mycode有什麼問題?有人能幫我嗎?

import React from 'react' 
import { 
    Image, 
    StyleSheet, 
    Text, 
    TextInput, 
    TouchableOpacity, 
    View 
} from 'react-native' 
import { Field, reduxForm } from 'redux-form' 
import { Container, Content, InputGroup, Button , Input, Icon, Item } from 'native-base'; 
import { login } from '../Action/Action'; 
import {NavigationActions} from "react-navigation"; 
import styles from './Style'; 
import { connect, } from 'react-redux' 

} 
function submit(values) { 
    console.log(values); 

} 
const renderInput = ({ input: { onChange, ...restInput }}) => { 
    return <Input onChangeText={onChange} {...restInput} /> 
} 
} 
const Form = props => { 
    //const {navigate} = this.props.navigation; 
    //let _navigateTo; 
    if (props.appUser.isLoggedIn) { 
     console.log("haloooo"); 
     const navigateAction = NavigationActions.navigate({ 
      routeName: 'Profile', 
      params: {}, 
      action: NavigationActions.navigate({ routeName:  'SubProfileRoute'}) 
     }) 

     this.props.navigation.dispatch(navigateAction) 
    } 
    const { handleSubmit } = props 
    //console.log(props.appUser); 
    return (
     <Container > 
      <Content> 
       <Content> 
        <View style={styles.container}> 
         <Image source={require('../Assets/Octocat.png')} style={{width: 128, height: 128}} /> 

        </View> 
       </Content> 
       <Content style={{paddingLeft:10,paddingRight:10,paddingBottom:5, paddingTop:30}}> 
        <Item rounded> 
         <Field name="username" component={renderInput} /> 
        </Item> 
       </Content> 
       <Content style={{paddingLeft:10,paddingRight:10}}> 
        <Item rounded> 
         <Field name="password" component={renderInput} /> 
        </Item> 
       </Content> 
       <Content style={{padding:10}}> 
        <Button onPress={handleSubmit(props.onLogin)} block info> 
         <Text>Login</Text> 
        </Button> 
       </Content> 
      </Content> 

     </Container> 

    ) 
} 
const myReduxForm = reduxForm({ 
    form: 'MyReduxForm', 
})(Form) 
function mapStateToProps(state) { 
    return { 
     appUser: state.appUser, 
    } 
} 

function mapDispatchToProps(dispatch) { 
    return { 
     onLogin: (data) => { dispatch(login(data)); }, 
    } 
} 
export default connect(
    mapStateToProps, 
    mapDispatchToProps 
)(myReduxForm) 
// export default reduxForm({ 
//  form: 'test' 
// })(Form) 
// export default reduxForm({ 
//  form: 'test' 
// })(Form) 
+0

嘗試this.props'用''一樣更換props'' props.navigation.navigate()'。 –

回答

1

嘗試使用withNavigation。使用組件FormWithNavigation如下面的代碼中

const Form = ({ navigation }) => { 
//.. 
navigation.navigate('XXX') 
} 

const FormWithNavigation = withNavigation(Form); 
+0

用({navigation})替換const Form = props => {} – jack

+0

是的,我更新瞭解決方案〜 – KimHau

+0

代碼仍然不工作 – jack

0

您使用this.props而不只是props

這個應該工作

const { handleSubmit, navigation: {navigate} } = props