اذهب إلى المحتوى
  • 0

ما سبب خطأ Element type is invalid: expected a string (for built-in components) or a class/function but got: object في مشروع React Native

السؤال

نشر

عند تشغيل مشروع React Native الخاص بي حصلت على الخطأ:

Element type is invalid: expected a string (for built-in components) or a class/function but got: object

لكن تفقدت المكون ويتم تصديره بشكل صحيح ودالة return صحيحة أي المكونات بداخل مكون واحد، فما المشكلة التي تمنع عرض ذلك المكون؟

import React, { useState, useEffect } from 'react';
import { ScrollView, KeyboardAvoidingView } from 'react-native';
import AsyncStorage from '@react-native-async-storage/async-storage';
import axios from '../config/axios';
import { SIGNIN_URL } from '../config/urls';
import Input from '../components/Input';
import Button from '../components/Button';
import ScreenTitle from '../components/ScreenTitle';
import Loader from '../components/Loader';
import Alert from '../components/Alert';
import Container from '../components/Container';
import styles from './styles/authStyles';


function SignInScreen() {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');
    const [Loading, setLoading] = useState(false);
    const [Alert, setAlert] = useState({messages: null, type: ''});

    useEffect(() => {
        const timer = setTimeout(() => {
            setAlert({ messages: null });
        }, 3000);

        return () => clearTimeout(timer);
        }, [alert.messages]);

    const changeEmailHandler = (value) => {
        setEmail(value);
    }

    const changePasswordHandler = (value) => {
        setPassword(value);
    }

    const validate = () => {
        let validationErrors = [];
        let passed = true;
        
        if(!email) {
            validationErrors.push('الرجاء ادخال البريد الإلكتروني');
            passed = false;
        }

        if(!password) {
            validationErrors.push('الرجاء ادخال الرقم السري');
            passed = false;
        }

        if (validationErrors.length > 0) {
            setAlert({ messages: validationErrors, type: 'danger' });
        }

        return passed;
    }

    _signIn = () => {
        (async() => {
            if(!validate()) return;
            setLoading(true);

            try{
                const response = await axios.post(SIGNIN_URL, {email, password});
                setLoading(false);
                setEmail('');
                setPassword('');
                AsyncStorage.setItem('accessToken', response.data.accessToken);
            }catch(e){
                setLoading(false);
                setAlert({messages: e.response.data.messages, type: 'danger'});
            }
        })();
    }

    return(
        <Container>
            <Loader title="جاري إنشاء حساب جديد" loading={isLoading}/>
            <Alert messages={alert.messages} type={alert.type}/>
            <ScrollView contentContainerStyle = {{paddingVertical: 40}}>
                <KeyboardAvoidingView behavior='panding' enabled>
                    <Input
                        placeholder='البريد الإلكتروني'
                        value={email}
                        onChangeText={changeEmailHandler}
                    />
                    <Input
                        placeholder='الرقم السري'
                        value={password}
                        onChangeText={changePasswordHandler}
                        secureTextEntry
                    />
                    <Button text={دخول} onPress={_signIn}/>
                </KeyboardAvoidingView>
            </ScrollView>

        </Container>
    )
}

export default SignInScreen;

 

mobile.rar

Recommended Posts

لا توجد أي إجابات على هذا السؤال بعد

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...