2016-12-23 39 views
2

我在項目中使用了immutable.js和redux,並且發現了一個很奇怪的問題。immutable.js在使用get()方法時感到困惑

這裏是選擇使用的代碼:

{ 
    dealDetail : dealDetails.get(id.toString()).toJS(), 
    dealTrackLog : dealTrackLogs.get(id).toJS() 
} 

首先,id是號碼,詳細,我必須通過ID字符串,並在trackLogs,相反,它必須是數字,否則會造成錯誤,「無法讀取的未定義的屬性toJS()

,我覺得也許這個問題在減速,這裏是代碼:

// dealDetailReducer 
// const initialStateOfDealDetail = fromJS({}) 
let details = {} 
action.data.details.map((detail) => { 
    details[detail.id] = detail 
}) 
return state.merge(fromJS(details)) 

... 

// dealTrackLogsReducer 
// initialStateOfDealTrackLogs = fromJS({}) 
if (state.get(action.data.id)) { 
    // has id in state, update 
    return state.withMutations(s => 
    s.update(
     action.data.id, 
     trackLog => trackLog.merge(fromJS(action.data.trackLogs)) 
    ) 
    ) 
} 
// no id in state, just set, id : data 
return state.set(action.data.id, fromJS(action.data) 

所以,我很難理解爲什麼以及何時傳遞數字/字符串?

回答

0

第一行

let details = {} 

您正在使用的詳細信息狀況的定期對象。對象強制字符串鍵。 您正在使用immutablejs操作的第二種情況保留了鍵的類型。