【发布时间】:2019-03-29 15:40:43
【问题描述】:
如果用户登录,我正在尝试有条件地返回导航栏。用户令牌保存到 localStorage,然后发送到后端系统。如果后端返回错误消息,则表示用户未登录,因此代码不应呈现导航栏。 但是,它并没有像我期望的那样工作,我现在真的需要其他人的知识。
我得到的错误信息是:
“Nav(...): 渲染没有返回任何内容。这通常意味着缺少返回语句。或者,不渲染任何内容,返回 null。”
Nav.js
import React from 'react';
import {Link} from 'react-router-dom';
import {tokenCheck} from '../utils/MediaAPI';
const Nav = () => {
tokenCheck(localStorage.getItem('Login-token')).then(data => {
if (data.message) {
return null;
} else {
return (
<nav>
<ul>
<li>
<Link to="/home">Home</Link>
</li>
<li>
<Link to="/profile">Profile</Link>
</li>
<li>
<Link to="/logout">Logout</Link>
</li>
</ul>
</nav>
);
}
});
};
export default Nav;
从我的 App.js 父组件渲染。
render() {
return (
<Router>
<Nav/>
<Route exact path="/" render={(props) => (
<Login {...props} setUser={this.setUser}/>
)}/>
<Route exact path="/home" render={(props) => (
<Home {...props} picArray={this.state.picArray}/>
)}/>
<Route exact path="/profile" render={(props) => (
<Profile {...props} userData={this.state.user}/>
)}/>
<Route exact path="/single/:id" component={Single}/>
</Router>
);
}
任何帮助将不胜感激!
【问题讨论】:
-
您在承诺中回归。你必须
await结果 -
@DTul 在
Nav中没有return,所以它返回undefined,而不是承诺。无论如何,不要忘记async/await函数也返回承诺。
标签: reactjs