当前位置: 首页 > 知识库问答 >
问题:

不变违反:不变违反:元素类型无效:预期为字符串(用于内置组件),但得到了:未定义

卢永寿
2023-03-14

我得到上述错误,而我试图运行我的应用程序。

编辑:添加代码

应用程序。js

import React from 'react';
import { StyleSheet, Text, View} from 'react-native';

import {StackNavigator} from 'react-navigation';
import Login from 'apps/components/Login';

const NavigationApp = StackNavigator({
    Home: {screen: Login}
    ,}, {
        navigationOptions:{
            header: false,
        }
    }
);

export default class App extends React.Component {
  render() {
    return (
        <NavigationApp />
    );
  }
}

登录。js

import React from 'react';
import { StyleSheet, Text, View, TextInput, AsyncStorage, 
ToacheableOpacity,KeyboardAvoidingView} from 'react-native';
import {StackNavigator} from 'react-navigation';

export default class Login extends React.Component {
    constructor (props){
        super(props);
        this.state={
            username:'',
            password:'',
        }
    }

    componentDidMount(){
        this._loadInitialState().done();
    }

    _loadInitialState = async () => {
        var value= await AsyncStorage.getItem('user');
        if (value != null){
            this.props.navigation.navigate('profile');
        }
    }

    render() {
      return (
        <KeyboardAvoidingView behavior='padding' style={styles.wrapper}>
          <View style={styles.container}>
            <TextInput style={styles.textInput}
            placeholder='Usuario' onChangeText={(username)=> this.setState({username})}/>

            <TextInput style={styles.textInput}
            placeholder='Clave' onChangeText={(password)=> this.setState({password})}/>

            <ToacheableOpacity>
              style={styles.button} onPress{this.login}
              <Text style={styles.buttonText}>Iniciar Seccion</Text>
            </ToacheableOpacity>
          </View>
        </KeyboardAvoidingView>
      );
    }

    login = () =>{
        fetch('https://wb382.com/api/mobile/login.php', {
            method: 'post',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
            },
            body: JSON.Stringify({
                username: this.state.usersame,
                password: this.state.password,
            })
        })

        .then((response)=>response.json())
        .then((res)=>{
            if (res.success===true){
                AsyncStorage.setItem('user',res.user);
                this.props.navigation.navigate('profile')
            }else{
                alert(res.message);
            }
        })
    }
}

const styles = StyleSheet.create({
    wrapper:{
        flex: 1,
    },
    container:{
        flex: 1,
        alignItems: 'center',
        justifyContent: 'center',
        backgroundColor: '#000',
        paddingLeft: 40,
        paddingRight: 40,
    },
    buttonText:{
        fontSize: 26,
        color: '#fff',
    },
    textInput:{
        alignSelf: 'stretch',
        padding: 16,
        marginBotton: 20,
        backgroundColor: '#fff',
    },
    button:{
        alignSelf: 'stretch',
        backgroundColor: '#1fd100',
        padding: 20,
        alignItems: 'center',
    }
});

我不知道这些文件中的哪一个产生了错误。

为了模拟这些代码,我还在世博会上主持我的代码。木卫一

https://snack.expo.io/@wilson382/我的第一款手机应用

共有1个答案

狄赞
2023-03-14

登录组件在“ToachableOpacity”中出错。在import语句和render方法中都写错了。它是可触摸的。我已经编辑了您的演示代码,并更改为正确的名称修复了错误。

 类似资料: