2016-04-21 52 views
0

我有一个非常OO的结构,并且由于事件的混乱,我正要迁移到React/Redux。 我很好奇如何处理当前的模块做的,我有一个具有架构喜欢的对象:从事件驱动的OO到Redux架构

User { 
    getName() 
    getSurname() 
    etc... 
} 

而且,他们被用来作为原始JSON数据fasade /工厂为我所用,以通过JSON有很多的这些并操纵它(可变数据)

现在如何解决这个问题?

我到了我有一个异步动作调用的部分,我从api接收原始数据,而不是什么? 我应该通过'复杂'的对象与他们的getters/setters来陈述?据说它是不可变的,所以它看起来不像Redux推荐。

或者这个类类元素转换为像存取:

function getName(rawJson) { 
    return rawJson.name 
} 
function setName(rawJson, name) { 
    return Object.assign({}, rawJson, {name}) 
} 

解析它在行动和行动返回rawJSON大块减速器和比它贴到新的状态?

编辑:

用于用户A的简单伪代码模块:

function User(raw) { 
    return { 
    getName: function() { 
     return raw.name 
    } 
    setName: function(name) { 
     raw.name = name 
     return this 
    } 
    } 
} 

我的观点是关于移动的所有数据和压扁/在商店归它 - 会是细以具有例如阵列存储中的用户对象?或者他们都应该是纯粹的json。我想确保将所有这些对象变成基本价值的真正唯一正确的方法,因为它会有很多工作。

+0

给出这些外墙的例子之一。 – Brandon

+3

问题不是很清楚,你需要完成什么,以及发生了什么...... – dandavis

+0

已编辑,请检查 – Marcus

回答

0

不知道这将是完全相关的,但如果我理解你的问题,并把它的另一种方式:在那里把业务逻辑和其他验证/操作:

https://github.com/reactjs/redux/issues/1165

我亲自跟随这个趋势也是因为我把所有的异步动作操作都存放在我的动作创建者中,然后再按照我在reducer中选择的格式存储它们。 enter image description here

在这里,我选择将我从API获取的任何对象转换为JSON。同样,您可以在调度成功请求以存储您的reducer之前执行您需要的任何逻辑。

希望帮助/与任何你所要求的相关...

+0

好的,但你从动作创建者返回什么类型的数据?我的意思是有效载荷是一个JS对象?存储对象(包括方法,原型等)是否可以接受? 我的观点是,我需要发送对象回服务器后,用户进行更改,然后按'保存',因此它必须保持与以前一样的结构和属性,我恐怕需要做大量的转换/解析在从API到存储和回到API的路上......(在商店我们保持一切正确,所以一些典型的商业数据将与诸如......之类的应该混合在一起,应该显示cookie信息) – Marcus