在我的应用中,我必须下订单。订单有形状,大约20个属性,其中一些是静态的,一些是计算的。
在我的CartComponent.jsx中,我有方法saveOrder,它保存了进一步使用的订单。 它使用普通对象作为订单模型。
现在我可以确认订单或取消订单。确认后,我将authorizeOrder操作发送到商店。然后用户必须以某种方式确认订单(短信,令牌等,无论如何)然后订单。所以流程是: 保存订单 - >确认订单 - >授权订单(在其他组件中) - >发送订单(授权后)。
我的问题是:我应该在哪里保持订单的形状?这意味着 - 订单模型?它应该在authorizeOrder动作中创建吗?或组件是好的(原文如此!)?或者在orderModel.js中应该公开订单工厂或订单类?
答案 0 :(得分:2)
由于您使用Redux
,为什么不将它保留在那里?
CreateOrder
将接受要创建的对象的参数并依次添加到商店。
React
组件应发送至Redux
,并反馈给React
。
例如(如果我理解正确的话):
MyReactComponent = React.createElement({
...
saveOrder: function(e) { //assuming it is a button
var myOrderObject = {
//properties...
}
this.props.createOrder(myOrderObject);
}
.....
});
var mapStateToProps = function (state) {
return {
orders: state.orders
};
}
var mapDispatchToProps = function (dispatch) {
return {
createOrder: function (properties) {
dispatch(myService.create(properties));
}
}
};
module.exports = ReactRedux.connect(mapStateToProps, mapDispatchToProps)(MyReactComponent );
在商店中接下来,您将使用与您在服务中发送的内容进行比较的密钥在调度功能上创建对象
//myService
var load = function (data) {
return function (dispatch, getState) {
dispatch({
type: "createOrderKey",
payload: data
});
};
};
你的减速机中的
function updateReducer(state, action) {
var newstate;
switch (action.type) {
case "createOrderKey:
//clone state to newState
//create and add the object
return newstate;
default:
return state;
}
};