[英]Design Pattern with Redux Toolkit
我正在努力解決如何在我的項目中實施 redux 工具包。 我有一個獲取Setup
對象的 API。 這些對象中的每一個都非常大,具有很多屬性。 我最初的方法是使用 RTK 獲取所有對象,但僅使用name
和id
道具。 然后,為單個完整的Setup
object 設置一個單獨的切片,該切片將存儲所選Setup
的所有道具。 這給我帶來了很多問題,因為 state 沒有正確加載。 當前的工作流程如下所示。 首先,加載所有Setups
。 然后,通過下拉 select 單個Setup
。 然后調用 RTK 查詢來獲取Setup
的所有道具。 然后,將所有道具加載到切片中。 最后,將道具顯示到組件中。
您對如何以更簡單和實用的方式實現此功能有任何建議嗎? 我考慮過直接加載所有道具,而不僅僅是 id 和 name。 或者有兩個 RTK。 一個包含所有 Setups ,然后另一個緩存 RTK 用於單個Setup
。 要記住的一件事是,我計划然后對單個選定的設置執行不同的操作,例如更改名稱、過濾器等。
這是 API 的示例,我調用它來獲取所有Setup
(只有name
和id
):
[
{
"date": "Sat, 02 Jul 2022 00:14:50 GMT",
"default": true,
"id": "62bf8dfab60731051bcf77dd",
"name": "Default 0"
},
{
"date": "Thu, 30 Jun 2022 22:05:59 GMT",
"default": false,
"id": "62be1e47d4c5f49eb95cd06d",
"name": "Filter Setup"
}
]
這是單個Setup
的所有道具的示例:
{
"_id": {
"$oid": "62be1e47d4c5f49eb95cd06d"
},
"name": "Filter Setup",
"default": false,
"filters": [
{
"id": {
"$oid": "62bf8d03b60731051bcf77db"
},
"name": "RRR greater than 1"
},
{
"id": {
"$oid": "62bf8d09b60731051bcf77dc"
},
"name": "RRR greater than 1"
}
],
"state": {
"schema": {
"fields": [
{
"name": "index",
"type": "integer"
},
{
"name": "#",
"type": "number"
},
{
"name": ".m_RRR",
"type": "number"
},
{
"name": ".r_Result",
"type": "number"
},
{
"name": ".r_Result 50% Candle SL",
"type": "number"
},
{
"name": ".m_Entry Candle",
"type": "string"
},
{
"name": ".m_Zone Touch #",
"type": "number"
},
{
"name": ".m_Zone Origin",
"type": "number"
},
{
"name": ".m_Re-entry @ Other Level",
"type": "string"
},
{
"name": ".m_Fast Into Profits",
"type": "string"
},
{
"name": ".m_Trade @ Range Over",
"type": "string"
},
{
"name": ".m_Checked",
"type": "string"
},
{
"name": ".p",
"type": "string"
}
],
"primaryKey": [
"index"
],
"pandas_version": "0.20.0"
},
"data": [
{
"index": 0,
"#": 1.0,
".m_RRR": 3.37,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Hammer",
".m_Zone Touch #": 2.0,
".m_Zone Origin": 1.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 1,
"#": 2.0,
".m_RRR": 2.43,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Hammer",
".m_Zone Touch #": 3.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 2,
"#": 3.0,
".m_RRR": 2.29,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Engulfing",
".m_Zone Touch #": 3.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 3,
"#": 4.0,
".m_RRR": 2.97,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Engulfing",
".m_Zone Touch #": 3.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 4,
"#": 5.0,
".m_RRR": 3.48,
".r_Result": null,
".r_Result 50% Candle SL": null,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 4.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 5,
"#": 6.0,
".m_RRR": 3.22,
".r_Result": 3.22,
".r_Result 50% Candle SL": 3.22,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 4.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "Yes",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 6,
"#": 7.0,
".m_RRR": 1.98,
".r_Result": 0.0,
".r_Result 50% Candle SL": 0.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 5.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 7,
"#": 8.0,
".m_RRR": 4.8,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 2.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 8,
"#": 9.0,
".m_RRR": 4.59,
".r_Result": 4.59,
".r_Result 50% Candle SL": 4.59,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 3.0,
".m_Zone Origin": 2.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "Yes",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 9,
"#": 10.0,
".m_RRR": 1.71,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 2.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 10,
"#": 11.0,
".m_RRR": 2.77,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 2.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 11,
"#": 12.0,
".m_RRR": 2.15,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Hammer",
".m_Zone Touch #": 3.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 12,
"#": 13.0,
".m_RRR": 1.71,
".r_Result": 1.71,
".r_Result 50% Candle SL": 1.71,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 2.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "Yes",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 13,
"#": 14.0,
".m_RRR": 6.0,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 4.0,
".m_Zone Origin": 1.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "Yes",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 14,
"#": 15.0,
".m_RRR": 6.48,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 4.0,
".m_Zone Origin": 1.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "Yes",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 15,
"#": 16.0,
".m_RRR": 5.07,
".r_Result": 4.67,
".r_Result 50% Candle SL": 4.67,
".m_Entry Candle": "Hammer",
".m_Zone Touch #": 2.0,
".m_Zone Origin": 1.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 16,
"#": 17.0,
".m_RRR": 1.86,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 2.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 17,
"#": 18.0,
".m_RRR": 3.87,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Hammer",
".m_Zone Touch #": 8.0,
".m_Zone Origin": 1.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 18,
"#": 19.0,
".m_RRR": 1.97,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 3.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 19,
"#": 20.0,
".m_RRR": 3.25,
".r_Result": 3.07,
".r_Result 50% Candle SL": 3.07,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 3.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "Yes",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 20,
"#": 21.0,
".m_RRR": 4.15,
".r_Result": 0.0,
".r_Result 50% Candle SL": 0.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 3.0,
".m_Zone Origin": 2.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 21,
"#": 22.0,
".m_RRR": 2.44,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 3.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 22,
"#": 23.0,
".m_RRR": 3.9,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 4.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "Yes",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 23,
"#": 24.0,
".m_RRR": 1.92,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 4.0,
".m_Zone Origin": 0.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
},
{
"index": 24,
"#": 25.0,
".m_RRR": 2.66,
".r_Result": -1.0,
".r_Result 50% Candle SL": -1.0,
".m_Entry Candle": "Spinning",
".m_Zone Touch #": 4.0,
".m_Zone Origin": 1.0,
".m_Re-entry @ Other Level": "No",
".m_Fast Into Profits": "No",
".m_Trade @ Range Over": "No",
".m_Checked": "No",
".p": "AUDUSD"
}
]
},
"notes": "",
"author": {
"$oid": "6175d1ad7d0ea08fbd85cc2c"
},
"documentId": {
"$oid": "62bdb1e4acbe566f0779271d"
},
"date_created": {
"$date": 1656626759825
},
"options": [
{
"id": ".m_RRR",
"name": "RRR",
"type": "number"
},
{
"id": ".m_Entry Candle",
"name": "Entry Candle",
"type": "string",
"values": [
"Hammer",
"Engulfing",
"Spinning"
]
},
{
"id": ".m_Zone Touch #",
"name": "Zone Touch #",
"type": "number"
},
{
"id": ".m_Zone Origin",
"name": "Zone Origin",
"type": "number"
},
{
"id": ".m_Re-entry @ Other Level",
"name": "Re-entry @ Other Level",
"type": "string",
"values": [
"No"
]
},
{
"id": ".m_Fast Into Profits",
"name": "Fast Into Profits",
"type": "string",
"values": [
"No",
"Yes"
]
},
{
"id": ".m_Trade @ Range Over",
"name": "Trade @ Range Over",
"type": "string",
"values": [
"No",
"Yes"
]
},
{
"id": ".m_Checked",
"name": "Checked",
"type": "string",
"values": [
"No"
]
},
{
"id": ".p",
"name": "",
"type": "string",
"values": [
"AUDUSD"
]
}
]
}
如果您需要任何其他信息,請告訴我。
像 Apollo GraphGL 這樣的東西可能對你有用。 GraphQL 查詢可以按照您想要的確切形狀/模式拉入對象,因此它對您來說更有條理。 否則,您可能需要制作某種解析實用程序 function 以將響應 object 清理為新型 object。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.