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)
所以,我很難理解爲什麼以及何時傳遞數字/字符串?