javascript - React:在服务函数中处理状态更新是一种好习惯吗?
问题描述
以在页面上显示帖子的虚拟博客应用程序为例。
在某些时候,您可以更新帖子正文。我将生成的代码如下所示:
// services
import { updatePost } from './postServices.js';
const Blog = () => {
const [posts, setPosts] = useState([]);
...
const handleUpdatePost = (newBody) => {
updatePost(postId, newBody posts, setPosts)
.catch((error) => // handle error )
};
...
return (
...
)
};
函数updatePost
看起来像这样:
export const updatePost = async (postId, newBody, posts, setPosts) => {
const result = await axios.post(`posts/${postId}`, { body: newBody });
// handling the state update here
const { updatedPost } = result.data;
const copyPosts = [...posts];
const post = copyPosts.find((post) => post.id === updatedPost.id);
post.body = updatedPost.body;
setPosts(copyPosts);
};
我喜欢这种方法,因为它使反应组件保持干净且易于理解。另一方面,它需要传递整个posts
数组及其setState
,我听说这可能不太好(出于性能原因?)。
我的问题是:该代码会被认为是好的还是有我不理解的陷阱?
解决方案
推荐阅读
- kubernetes - nginx-ingress 控制器不进行循环
- python - 如何编写 If else 条件以在两个函数之间进行选择
- android - Cordova 插件购买。批准的事件不会触发
- azure-devops - 在 Azure 管道上构建之前选择版本
- jquery - 创建整数数组并让函数检查每个值
- azure - Kubernetes 部署后外部 IP 无响应
- verilog - 如何在 Chisel 生成的模块中注入 Verilog 代码?
- excel - Application.Run 返回错误 438,不调用宏
- excel - 为什么 MS Excel 在打开超链接时会忽略此 URL 参数?
- android-studio - Android Studio 和 Gradle KTS 构建文件