【发布时间】:2020-01-03 14:45:12
【问题描述】:
我有一个名为 Posts 的父组件,它有一个 useEffect 并获取数据,然后我有一个名为 Post 的子组件,它从 props 呈现帖子。我在 Post 中有一个删除和喜欢的功能,我希望父级在帖子被点赞或帖子被删除时重新呈现。我怎样才能做到这一点?
const Posts = () => {
const [posts, setPosts] = useState([]);
useEffect(() => {
getPosts();
}, []);
const getPosts = async () => {
const data = await fetch('https://localhost:1111/api/posts/posts', {
credentials: 'include'
});
const response = await data.json();
console.log(response);
setPosts(response);
};
return (
<div>
{posts.map(post => (
<Post key={post.id} post={post} />
))}
</div>
);
};
const Post = props => {
const like = async post => {
const formData = new FormData();
formData.append('id', post);
const data = await fetch('https://localhost:1111/api/posts/like', {
method: 'POST',
body: formData,
credentials: 'include'
});
const response = await data.json();
console.log(response);
};
const deletePost = async post => {
const formData = new FormData();
formData.append('id', post);
const data = await fetch('https://localhost:1111/api/posts/deletepost', {
method: 'POST',
body: formData,
credentials: 'include'
});
const response = await data.json();
console.log(response);
};
return (
<div>
<img
src={`http://localhost:1111/api/posts/uploads/images/${props.post.content}`}
alt={`Post ${props.post.id}`}
/>
<button onClick={() => like(props.post.id)}>Like</button>
<button onClick={() => deletePost(props.post.id)}>Delete</button>
</div>
);
};
【问题讨论】:
-
为什么要重新渲染父帖子?重新渲染子 Post 还不够吗?
-
因为父 Posts 是获取数据的组件,我想实时更新点赞和删除
标签: reactjs