2016-10-04 42 views
2

在我的應用程序中,我必須做出一些命令。訂單具有形狀,大約20個屬性,其中一些是靜態的,一些是計算的。我應該在React和Redux中保存數據模型?

在我的CartComponent.jsx我有saveOrder方法,它可以節省進一步使用的順序。 它使用普通對象作爲訂購模型。

現在我可以確認訂單或取消訂單。確認後,我會向商店派發authorizeOrder操作。然後用戶必須以某種方式確認訂單(短信,令牌等),然後訂購。因此,流程如下: 保存訂單 - >確認訂單 - >授權訂單(在其他組件中) - >發送訂單(授權後)。

我的問題是:我應該在哪裏保持訂單的形狀?它意味着 - 訂單模型?是否應該在authorizeOrder操作中創建?或者組件對於那個(原文如此!)是好的?或者在orderModel.js應該暴露訂單工廠或訂單類?

+0

好了,所以我決定繼續在裏面單獨的目錄mA邏輯模塊目錄。我有模塊「付款」,在那裏我創建了「模型」目錄(以及...我找不到更好的名稱),並在那裏我創建了「orderFactory.js」與一個簡單的工廠函數返回基本訂單或訂單提供的屬性。 我現在可以使用這個工廠作爲我的reducer的初始狀態,而且我的動作創建者可以將完整的訂單發送到後端。 由於我的reducer保持純粹,並且動作創建者處理業務邏輯(他們爲訂單添加時間戳,排序參數等)。 – kzg

回答

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; 
    } 
}; 
+0

所以你的建議是使用REDX。好。但是,我的服務是什麼?它看起來像某種行爲創造者,我是對的嗎? – kzg

+0

您的服務基本上是一個JavaScript文件,用於執行'dispatch'函數或使用例如'ajax'調用與服務器通話。沒什麼特別的。 – Tikkes

+0

我有redux thunk調度異步操作(他們處理與後端的通信),但沒問題,在我的項目myService.js功能在actions.js;) – kzg

相關問題