有沒有辦法僅更新ReactJS存儲中的對象集合中的某些值?我有一個電話,讓我把所有的客戶名單都帶上了一些匿名的價值。我需要在收到此響應後更新商店,但是再次使用這些匿名數據再次進行服務調用以獲取真實價值。我需要第一次調用的數據以及第二次調用數據網格的所有信息。那麼,如何僅使用一些關鍵值對更新我的商店,而不是使用react-redux應用程序中的整個數據集呢?使用某些值更新同一商店react-redux
回答
您沒有提供任何代碼,但是...您可以在您的減速器中執行此操作。
假設你有一個名爲clientReducer的reducer,如果它只是一個對象,如上所述,你可以這樣做。
function clientReducer(state, action) {
return Object.assign({}, state, {
[action.payload.key] : action.payload.value
}
}
你的行動將是這個樣子:
function changeClientValue(key, value) {
return {
type: 'CHANGE_CLIENT_VALUE',
payload: {
key: key,
value: value
}
}
}
對於對象的數組,我認爲這應該不使用任何額外的庫一樣不可改變JS工作。雖然我還沒有測試過!
const initialState = [
{
id: 1,
clientFirstName: 'Paul',
...otherFields
},
{
id: 2,
clientFirstName: 'Adam',
...otherFields
}
];
// Reducers
function clientSubReducer(state = initialState, action) {
switch(action.type) {
case 'MODIFY_CLIENT':
return {
...state[action.payload.index],
...action.payload.fields
}
}
}
export function clientReducer(state, action) {
switch(action.type) {
case 'MODIFY_CLIENT':
return [
...state.slice(0, action.payload.index),
clientSubReducer(state, action),
...state.slice(action.payload.index + 1)
]
}
}
//Action
function modifyClient(client) {
return (dispatch, getStore) => {
const store = getStore();
let storeIndex = -1;
for (let i = 0; i < store.clients.length; i++) {
const storeClient = clients[i];
if (client.id === storeClient.id) {
storeIndex = i;
}
}
// Our store contains the client object
if (storeIndex > -1) {
dispatch({
action: 'MODIFY_CLIENT',
payload: {
index: storeIndex,
fields: client // You could diff the client and store client and pass only the ones you want to modify back
}
})
}
//Our Store does not contain the client object
else {
dispatch({
action: 'ADD_CLIENT',
payload: {
client: client
}
})
}
}
}
謝謝。但我得到的數據大約是1000.所以會有至少1000個編碼值。我選擇它們並進行另一次服務調用,同時我使用編碼值填充頁面。在第二次調用的響應之後,我必須匹配來自兩個調用的ID,並更改商店中的相應屬性,而不是所有屬性。基本上與解碼後的響應疊加在商店中已經存在的內容。 –
對不起,所以你得到*對象*的數組* *?那是對的嗎? – Mirrorcell
是的。像這樣的東西。 '{「deAnonymizedList」:[{「key」:「@#$#@ $ @ 26071」,「value」:「ActualValue26071」},{「key」:「@#$#@ $ * 51523」值「:」ActualValue51523「},{」key「:」@#$#@ $ @ 38514「,」value「:」ActualValue38514「}] }' –
- 1. Apple商店更新?
- 2. python商店新值
- 3. 使用NGRX /存儲更新商店
- 4. 在商店更新嵌套值
- 5. 在更新請求更新某些值
- 6. Redux:使用同步調度更新商店
- 7. extjs4 ajax api商店更新
- 8. React + Redux不更新商店
- 9. 無法更新商店
- 10. ExtJs Gridpanel Json商店更新
- 11. 安卓更新Play商店
- 12. Play商店更新通知
- 13. 使用另一個表中的某些值的更新表
- 14. 更新國家市場,同時更新商店上的.xap
- 15. Windows應用商店應用UI更新
- 16. Windows應用商店應用更新GridView
- 17. Flux - 如何處理更新同一視圖的多個商店?
- 18. C#商店應用程序:更新ListView
- 19. Windows商店應用程序更新
- 20. 在Play商店更新我的應用
- 21. Android Play商店應用更新
- 22. 強制應用程序商店更新
- 23. 應用商店提交:優先更新?
- 24. 流量:如何從商店內更新商店
- 25. 使用某些參數更新另一個SQL表並使用某些參數更新
- 26. Sencha商店更新刷新視圖
- 27. PHP商店值
- 28. Android應用未顯示在某些設備上的Play商店
- 29. 某些設備不支持應用在Play商店中
- 30. 用sencha touch更新商店記錄值2
您能否給我們更多關於商店中當前Immutable對象的細節? ImmutableJS根據數據類型有很多方法:List,Map,... – Ryan27
數據看起來像這樣: '{「pid」:「132430-26071-1102-10064340-42193」,「clientSalutation 「:」Mr。「,」clientFirstName「:」@#$#@ $ * 26071「,」clientLastName「:」@#$#@ $ @ 51523「,」contractTypeDescription「:」APS 04「,」currency「: 「EUR」, 「的QualityScore」:0 「qualityVal」:32, 「portfolioTotalAssets」:1.316970318E7 「的clientId」:132430 「portfolioKey」: 「1102-10064340.11」, 「策略」: 「中等」, 「是否新款」 :真 「outcomeScorePct」:0.0 「lastActivityDate」: 「2016-09-03T00:00:00」, 「YTD」:11.253554999999999 「outcomeScore」:0 「qualityScoreCalculated」:0 「ytdAvailable」:真」 ytdString「:」11.253554999999999「,」qualityLabel「:」Poor「}' –
我的數據基本上是這些對象的集合,在第二次調用後,我得到」clientFirstN ame「的值,我只需要更新這些值並讓其他數據保持原樣。 –