【发布时间】:2018-12-14 15:03:02
【问题描述】:
你好,这是我第一次来这里。
过去几个小时我一直在尝试解决这个问题,但我无法理解这个问题(我是新手)。
在PrivateRoute 中,我正在尝试基于会话呈现身份验证组件。
- 会话 EXISTS => 应呈现身份验证组件
- 不存在 => 接收到的组件应呈现
我得到的错误是:
Objects are not valid as a React child (found: [object Promise]).
If you meant to render a collection of children, use an array instead.
我们将不胜感激!
这是我到目前为止所做的:
import Login from './Login'
import Register from './Register'
import React, {Component} from 'react'
import Authentication from './Authentication'
import { BrowserRouter , Redirect, Route, Switch,} from 'react-router-dom'
const Authorization= ()=>{
return new Promise ((resolve,reject)=>{
fetch('http://localhost:3000/content',{credentials:'include'}) //includes cookie from different port
.then((res)=>res.json())
.then((data)=>{
if (data.user=="notLogged"){
reject(false)
}else
resolve(true)
})
})
}
const PrivateRoute= async ({ component: Component})=> {
var auth= await Authorization()
console.log(auth);
if (auth){
return <Authentication/>
}else{
return <Component/>
}
}
class Index extends Component{
render(){
return(
<BrowserRouter>
{/* router may have only one child element- switch is the more common */}
<Switch>
<PrivateRoute exact path="/" component={Login}/>
<PrivateRoute exact path="/login" component={Login} />
<Route exact path="/register" component={Register} />
</Switch>
</BrowserRouter>
)
}
}
export default Index
【问题讨论】:
-
无论
var auth= await Authorization()的答案如何,都会发生此错误吗? -
没有它在这一行生成,我在从授权返回结果时遇到了一些困难,所以我使用 Promises 进行了尝试。和错误一致。
标签: javascript reactjs react-router react-router-dom