undefined不是对象(评估''_this.props.navigator.push“)

时间:2017-03-24 10:19:44

标签: react-native react-native-router-flux react-native-navigation

我试图在用户登录时导航到其他页面。但我得到这个错误,我似乎无法弄清楚为什么。我正在使用mac工作。 我也试过使用navigatorIOS,但问题不会消失。请帮忙。

import React, { Component } from 'react';
import {AppRegistry,View,Text,Image, StyleSheet,Navigator, AsyncStorage } from 'react-native';
import {
  Container,
  List,
  ListItem,
  Content,
  Footer,
  FooterTab,
  Header,
  Button,
  Icon,
  Tabs,
  Title,
  InputGroup,
  Input
} from 'native-base';
import{
Actions,
Scene,
Router
}from 'react-native-router-flux';
import Reg from './Reg'
export default class Log extends Component{
  render(){
    return(

      <Container>
      <View style={{alignItems:'center'}}>
      <Icon name='ios-contact' style={{fontSize:120}}/>
      </View>
          <Content style={{flex:1, top:50}}>
            <List>
            <ListItem>
            <InputGroup>
                  <Icon name='ios-at-outline' style={{color:'#5bc0de'}}/>
                  <Input
                  onChangeText={(username) => this.setState({username})}
                  value={this.state.username} placeholder='Email id' />

            </InputGroup>
            </ListItem>
            <ListItem>
            <InputGroup>
                  <Icon name='ios-lock-outline' style={{color:'#5bc0de'}}/>
                  <Input onChangeText={(password) => this.setState({password})}
                   value={this.state.password} placeholder="Password" secureTextEntry />
            </InputGroup>
            </ListItem>
            <Button info style={{alignSelf:'center'}} onPress={this.Log}>
            LOGIN
            </Button>
            </List>

          </Content>

      </Container>

    );
  }


  constructor(props){
        super(props);
        this.state = {username: '', password: ''};
        console.log();
  }

  Log = () => {


        fetch('http://192.168.0.20:3000/users', {
         method : 'POST',
              headers: {
              'Accept': 'application/json',
              'Content-type': 'application/json',
              },

              body: JSON.stringify({
              username: this.state.username,
              password: this.state.password,

              })
        })

        .then((response) => response.json())
        .then((res) => {

                if(res.success=== true){
                  var username = res.message;

                     AsyncStorage.setItem('username', username);

                     this.props.navigator.push({
                       id: 'Ideas'
                     });
                }else {
                    alert(res.message);
                }



        })

        .done();

  }
}

1 个答案:

答案 0 :(得分:0)

您可以使用导航到其他页面

操作。()

EX:

Actions.dashboard();

如果传递任何数据

Actions.dashboard({id:&#39; Ideas&#39;});

import React, { Component } from 'react';

从&#39; react-native&#39;导入{AppRegistry,View,Text,Image,StyleSheet,Navigator,AsyncStorage}; import {   容器,   列表,   项目清单,   内容,   页脚,   FooterTab,   头,   按钮,   图标,   标签,   标题,   InputGroup,   输入 来自&#39; native-base&#39 ;; 进口{ 行动 现场, 路由器 来自&#39; react-native-router-flux&#39; 从&#39; ./ Reg&#39;进口Reg。 export default class Log extends Component {   渲染(){     返回(

  <Container>
  <View style={{alignItems:'center'}}>
  <Icon name='ios-contact' style={{fontSize:120}}/>
  </View>
      <Content style={{flex:1, top:50}}>
        <List>
        <ListItem>
        <InputGroup>
              <Icon name='ios-at-outline' style={{color:'#5bc0de'}}/>
              <Input
              onChangeText={(username) => this.setState({username})}
              value={this.state.username} placeholder='Email id' />

        </InputGroup>
        </ListItem>
        <ListItem>
        <InputGroup>
              <Icon name='ios-lock-outline' style={{color:'#5bc0de'}}/>
              <Input onChangeText={(password) => this.setState({password})}
               value={this.state.password} placeholder="Password" secureTextEntry />
        </InputGroup>
        </ListItem>
        <Button info style={{alignSelf:'center'}} onPress={this.Log}>
        LOGIN
        </Button>
        </List>

      </Content>

  </Container>

);
}


constructor(props){
    super(props);
    this.state = {username: '', password: ''};
    console.log();
 }

Log = () => {


    fetch('http://192.168.0.20:3000/users', {
     method : 'POST',
          headers: {
          'Accept': 'application/json',
          'Content-type': 'application/json',
          },

          body: JSON.stringify({
          username: this.state.username,
          password: this.state.password,

          })
    })

    .then((response) => response.json())
    .then((res) => {

            if(res.success=== true){
              var username = res.message;

                 AsyncStorage.setItem('username', username);

                 this.props.navigator.push({  // Remove this line
                   id: 'Ideas'                // Remove this line
                 });                          // Remove this line
                 Actions.<pushComponentName>({id: 'Ideas'})  // Add this line
            }else {
                alert(res.message);
            }



    })

    .done();

} }