我正在构建一个类似于TodoList的简单React Flux js应用程序,其基本功能在于某些实体的CRUD操作。当应用程序启动时,它从服务器获取数据并显示项目列表,然后我可以使用表单创建新项目,编辑和删除。我决定尝试使用Immutable.js方法但面临的问题是:何时以及哪些数据应该转换为不可变对象。例如,当我获取列表时,我将其设为不可变(Immutable.fromJS())然后分配给商店的状态,对吗?但后来我创建了新项目,从表单字段中获取普通对象,并以某种方式将此数据发布到服务器。为了避免再次加载列表,我想将这个新项添加到不可变的商店列表中。那么当我必须将一些对象转换为不可变的app应用程序,并使用普通的json获取并向服务器发送数据时,我应该如何处理这种情况呢?
答案 0 :(得分:12)
您希望使所有对象都不可变。您将其转换为可变对象的唯一时间是您需要将其发送到服务器。而且,由于您从服务器返回一个普通的JSON对象,因此在获取它时将其转换为不可变对象。
创建新项目时,您还需要一个不可变对象,并将其发送到商店。因此,商店的状态只是一组不可变向量中的不可变对象。您需要将JSON对象发送到服务器的事实是与服务器通信的实现细节,并且只应由处理通信的商店/服务知道。
所以流程将是:
newItem
上保留不可变this.state
记录,并在表单字段更改时更新该记录) this.state.newItem
发送到商店,商店会将商品添加到其不可变向量中,并将其转换为JSON并将其发送到服务器。