Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 为什么我会得到;对象作为React子对象无效;?_Reactjs - Fatal编程技术网

Reactjs 为什么我会得到;对象作为React子对象无效;?

Reactjs 为什么我会得到;对象作为React子对象无效;?,reactjs,Reactjs,我试图在UserContext中使用_id、用户名和布尔值设置一个经过身份验证的用户,但是当我保存文件时,我得到了 错误:对象作为React子对象无效(找到:具有密钥{u id,username,authenticated}的对象)。如果要呈现子对象集合,请改用数组 这是我的UserProvider.tsx文件: import React, { useState, createContext } from 'react' import {authUser} from '../interface/

我试图在UserContext中使用_id、用户名和布尔值设置一个经过身份验证的用户,但是当我保存文件时,我得到了

错误:对象作为React子对象无效(找到:具有密钥{u id,username,authenticated}的对象)。如果要呈现子对象集合,请改用数组

这是我的UserProvider.tsx文件:

import React, { useState, createContext } from 'react'
import {authUser} from '../interface/Interface'

const defaultValues = {
    _id: undefined,
    username: undefined,
    authenticated: false,
}

export const UserContext = createContext<any>(null)

export const UserProvider = (props: { children?: React.ReactChild }) => {
    const [authenticatedUser, setAuthenticatedUser] = useState<authUser>(defaultValues)
    const { children } = props

    return (
        <UserContext.Provider value={[authenticatedUser, setAuthenticatedUser]}>
            {children}
        </UserContext.Provider>
    )
}
export const App = () => {
    return (
        <UserProvider>
            <DadJokesProvider>
                    <Routes>
                        <Navigation />
                    </Routes>
            </DadJokesProvider>
        </UserProvider>
    );
};
这是我使用authenticatedUser的地方:

    import {UserContext} from '../shared/provider/UserProvider';
const [authenticatedUser, setAuthenticateduser] = useContext(UserContext);({username:'',password:''});
    
    const signIn = async () => {
        try{
            const {data} = await DatabaseAPIService.login(loginCredentials)
            console.log(data)
            setAuthenticateduser(data)
        } catch(error){
            console.log(error)
            alert('wrong username or password')
        }
    };
最后是我的app.tsx文件:

import React, { useState, createContext } from 'react'
import {authUser} from '../interface/Interface'

const defaultValues = {
    _id: undefined,
    username: undefined,
    authenticated: false,
}

export const UserContext = createContext<any>(null)

export const UserProvider = (props: { children?: React.ReactChild }) => {
    const [authenticatedUser, setAuthenticatedUser] = useState<authUser>(defaultValues)
    const { children } = props

    return (
        <UserContext.Provider value={[authenticatedUser, setAuthenticatedUser]}>
            {children}
        </UserContext.Provider>
    )
}
export const App = () => {
    return (
        <UserProvider>
            <DadJokesProvider>
                    <Routes>
                        <Navigation />
                    </Routes>
            </DadJokesProvider>
        </UserProvider>
    );
};
export const App=()=>{
返回(
);
};

您如何使用
?在某个地方,需要将孩子们转换成JSX。你在这样做吗?检查一下你在道具中作为“孩子”发送的内容。在我的登录视图中,经常会意外地发送一个对象而不是JSX。我已经用相关的signinview.tsx代码更新了帖子