在将数据从db传递到MEAN Stack的前端时遇到了问题。 我尝试使用axios插件来获取数据,但没有显示。 这是代码:
如何向这部分显示信息(例如:用户名)?
<div className="user-details">
<tr>
<th>Username: </th>
<th></th>
</tr>
</div>
答案 0 :(得分:0)
我不确定你的问题究竟是什么,你将用户设置为数组,但在渲染方法中你将其视为“文本”,尝试使用map方法迭代每个用户并显示每个用户信息,如果从API获取信息时遇到问题,请尝试在客户端package.json中设置代理到API端口,并使用响应ComponentDidMount生命周期中的操作。
答案 1 :(得分:0)
你可以使用如下所示,在你的axios请求中添加标题,设置'crossDomain':true以克服cors errorr。
export default class Profile extends Component{
constructor(props){
super(props);
this.state = {
users: []
}
}
conmponentDidMount(){
axios.get('/api/account/profile',{ headers: { 'crossDomain': true, 'Content-Type': 'application/json' } })
.then(res=> {
this.setState({ users: res.data }).then(profileState => {
console.log(JSON.stringify(this.state.users))
}); //It sets the state asynchronously
})
}
render(){
<div>
<div className="user-details">
{
this.state.users.map(user =>
<tr>
<td>Username: </td>
<td>{user.name}</td>
</tr>
)
}
</div>
</div>
}
}
答案 2 :(得分:0)
谢谢,
实际上我只是使用this.state.user.name
而不用映射从数据库中显示
<strong>Name:</strong>{this.state.user.name}<br/>
在api中,我在url中获取用户ID,以从会话中获取当前用户/活动用户。
axios.get('/api/account/profile/info?id=' +id)
.then(res => {
this.setState({ user: res.data.user });
})