【发布时间】:2019-03-13 16:22:04
【问题描述】:
首先,我想从我的服务器加载一个 JSON;它将包含一个对象列表。然后,我需要像列表一样渲染这些对象。单击列表项时,应将用户重定向到显示有关单击项的信息的页面。显示的信息应该从另一个 API 调用中获取到我的服务器。
有人可以指导我吗?
state = {
isLoading: true,
users: [],
error: null
};
fetchUsers() {
fetch(`http://localhost:3001/blog/view`)
.then(response => response.json())
.then(data =>
this.setState({
users: data,
isLoading: false,
})
)
.catch(error => this.setState({ error, isLoading: false }));
}
componentDidMount() {
this.fetchUsers();
}
render() {
const { isLoading, users, error } = this.state;
return (
<React.Fragment>
<h1 style={{textAlign: 'center'}}>My Blog</h1>
{error ? <p>{error.message}</p> : null}
{!isLoading ? (
users.map(user => {
const { _id, title, details,date } = user;
return (
<div className='blog'>
<div key={_id}>
<p>Name: {title}</p>
<p>Email Address: {details}</p>
<p >Email Address: {date}</p>
<hr className='banner-text hr' />
</div>
</div>
);
})
) : (
<h3>Loading...</h3>
)}
</React.Fragment>
);
}
}
【问题讨论】:
-
嗨 Moshe,欢迎来到 StackOverflow!您是否尝试过使用 For 循环?
-
你的问题到底是什么?
-
@Amir 当我点击 is 时,如何为每个 Json 对象添加一个单独的页面
-
react 的整体思想是将渲染(视图)与数据(模型)分离。因此,基于此理念,您可以创建一个组件,该组件在其
props中获取一个对象并呈现其页面。然后,您可以使用onClick事件(在列表项上或显示对象的任何位置)并呈现该特定页面来代替当前页面。你甚至可以使用 react-router 重定向到本地路由 -
@Moshe 让我看看我是否理解您的问题:您想首先从某个地方加载一个包含对象列表的 json。然后,您需要将这些对象呈现为列表(如您所说,如博客条目)。然后,您希望单击这些对象中的每一个,将您重定向到显示有关该单击对象的信息的页面。而这些信息也来自一个 api 调用(远程服务器)。这是你的问题吗?
标签: javascript json reactjs react-router