【发布时间】:2018-10-04 04:35:03
【问题描述】:
我有一个非常简单的基本 React 应用程序正在运行。我可以通过 axios 发布和获取数据,并且可以在控制台中看到,当我发布数据时,我的状态已更新,但 DOM 没有反映这一点,我需要刷新才能看到更改。请检查我做错了什么:
这是我在 componentDidMount 中的 get 方法:
componentWillMount() {
const { posts } = this.state;
axios
.get("dburl/posts.json")
.then(response => {
const data = Object.values(response.data);
this.setState({ posts : data });
});
}
这是我提交表单的 post 方法。我正在创建带有标题和内容的帖子并在屏幕上显示它们:
handleSubmit = event => {
event.preventDefault();
const {post} = this.state;
const {posts} = this.state;
axios
.post("dburl/posts.json", post)
.then(response => {
console.log(response);
const newPost = Object.values(response.data);
this.setState({ post: newPost });
const updatedPosts = posts.push({title:post.title,content:post.content});
console.log(post);
console.log(updatedPosts);
console.log(this.state.posts);
});
};
这是我显示数据的方式:
render() {
let posts = <p>No posts yet</p>;
if (this.state.posts !== null) {
posts = this.state.posts.map(post => {
return <Post key={post.id} {...post} />;
});
}
return (
<React.Fragment>
{posts}
<form className="new-post-form" onSubmit={this.handleSubmit}>
<label>
Post title
<input
className="title-input"
type="text"
name="title"
onChange={this.handleChange}
/>
</label>
<label>
Post content
<input
className="content-input"
type="text"
name="content"
onChange={this.handleChange}
/>
</label>
<input className="submit-button" type="submit" value="submit" />
</form>
</React.Fragment>
);
}
我不明白为什么它没有更新 DOM 并且新帖子没有立即显示。请检查。谢谢。
【问题讨论】:
-
更新您的状态
this.setState({ post: updatedPosts });及之后const updatedPosts = -
谢谢。我不知道为什么我从那里删除了那条线。干杯。