当前位置: 首页 > 知识库问答 >
问题:

前端 - 请问:一般react持久化数据是在组件操作还是在项目操作(如果项目操作应该把data返回给项目)?

谷梁俊楚
2024-09-02

请问下,
项目中有组件,组件中使用props接受数据。
然后组件依据props中的data进行UI的渲染。

QQ_1725203393021.png

现在有需求:
data在组件内会经常被修改,然后还要对data进行持久化保存到数据库。

请问应该如何设计呢?
1、持久化数据是在组件操作还是在项目操作?(如果项目操作应该把data返回给项目)
2、组件对UI即时进行修改,是修改在组件内的之前传入的props.data的state就可以了对吗?不必再从props传入修改。

共有1个答案

柯瀚玥
2024-09-02

对于多层级的数据嵌套一般会使用一些数据流的工具来帮助我们更好的管理,如 mobx、zustand 等。这样顶层的数据变更就会引起组件的render,data -> ui。

这个实现其实如何实现都可以,以mobx举例,我们可以在组件中去对数据进行相应的修改,如新增数据,大概流程是:
请求服务端 -> status 200 -> 执行 mobx 的 action 更新数据 -> render。

对于更新 mobx 的数据这里可以看业务做一些调整,比如可以在一个地方统一去做数据的更新,这样我们只需在组件内取 dispatch 派发一个事件,在一个地方集中去 subscribe 订阅监听这个消息,这样的好处是可以将一类的数据操作统一封装,进行业务管理

 类似资料:
  • 基本设置 tag 信息:可自定义tag名称和tag描述,tag信息可用在接口tag标识中; mock 严格模式:开启后 mock 请求会对 query,body form 的必须字段和 json schema 进行校验; 开启json5:开启后允许接口请求body 和返回值中写 json 字段。yapi建议用户关闭 json5, 因为json-schema 格式可以进行接口格式校验。 新建项目 点

  • 问题内容: 我正在尝试使用treeView创建菜单。这是我第一次使用treeView,并且已经在多个网站上进行了阅读。 我在进行动作事件时遇到一些问题。我想要做的基本上是在用户单击树形视图中的某个节点时触发并发生事件,到目前为止,我有以下内容: 不幸的是,这似乎不起作用。 有什么方法可以在不更改类型的情况下将甚至添加到单个项目? 问题答案: 根据JavaFX 2.2文档 : “..A TreeIt

  • 在Spring Data Mongo 1.3.2-发行版中使用聚合时,我在项目操作上遇到了问题。当我使用Spring Data Mongo 1.3.1-发行版时,同样的操作也很好:

  • 目录其本质也是一种文件,它的r权限是ls,x权限是cd DIR结构体 Unix系统为用户提供了一种和文件结构FILE类似的目录结构DIR。它被称为目录流,目录中的目录项用dirent结构表示(但DIR的并非包含dirent成员) dirent结构 结构体成员 类型 描述 d_into ino_t 文件的inode号 d_name[ ] char 以NULL结尾的文件名 常用函数(库调用) 函数名

  • 通过遥控操作可进行操作的PS3™功能如下。 (设定)*1 (照片)*1 (音乐) (视频影像)*2 (游戏)*1*3 (网络) (PlayStation®Network)*1 (朋友) *1 可操作的项目有限。 *2 无法播放Blu-ray Disc™或DVD。无法播放内建著作权保护功能的视频影像文件。 *3 部分游戏支持遥控操作。

  • 今天早上,我发现了我的GitHub Actions BETA版邀请,并开始玩它,目的是迁移一些我目前在CircleCi上运行的简单构建、测试和部署管道。 我仍然在试图理解操作,但我心目中的流程是,在推动之后,工作流中的第一个操作将启动一个Docker容器。在这个容器中,我将运行一些简单的构建过程,比如最小化资产和移除人工制品。接下来的操作将在构建上运行一些测试。管道中的下一个操作将部署到许多环境中

  • 本文向大家介绍java项目中读取jdbc.properties文件操作,包括了java项目中读取jdbc.properties文件操作的使用技巧和注意事项,需要的朋友参考一下 java内容 jdbc.properties文件内容 补充知识:模仿com.alibaba.fastjson.JSONObject取值的PropertiesUtils 1.依赖于:fastjson 2.话不多说,上代码 以上

  • 本节将实现商城项目中会员下单操作模块:填写收货地址、确认订单信息和执行下单等操作。 (1). 开发前的准备工作: 在数据库 shopdb 中已存在订单表orders和订单详情表detail。 在执行下单操作前要确认会员必须在登录后状态(使用中间件验证)。 #在myobject/common/shopmiddleware.py中的__call__()方法中条件如下代码 # ... ...