【发布时间】:2019-06-01 13:15:59
【问题描述】:
关于函数式编程,当我要使用 sagas 删除一个系列时,为 action.serie 生成一个新对象是否正确,即使您不去更改被操作的对象?
export function* removeSerie(action){
try{
const user = yield new Promise(resolve => {
const unsub = auth.onAuthStateChanged(user => {
if (user) {
resolve(user)
unsub()
}
})
})
const url = `users/${user.id}/series/${actio.serie.genre}/${action.serie.id}`
yield database.ref(url).remove()
yield put(ActionCreator.removeSerieSuccess(action.serie.id))
yield getSeries(action.serie.genre)
}catch({message}){
yield put(ActionCreator.removeSerieFailure(message))
}
}
or
export function* removeSerie(action){
const serie = {...action.serie} //action.serie is the serie passed for remove, with id, name, genre...
try{
const user = yield new Promise(resolve => {
const unsub = auth.onAuthStateChanged(user => {
if (user) {
resolve(user)
unsub()
}
})
})
const idUser = user.uid //is necessary do this?
const url = `users/${idUser}/series/${serie.genre}/${serie.id}`
yield database.ref(url).remove()
yield put(ActionCreator.removeSerieSuccess(serie.id))
yield getSeries(serie.genre)
}catch({message}){
yield put(ActionCreator.removeSerieFailure(message))
}
}
如何更好地使用选项?
【问题讨论】:
-
FP 声明状态是不可变的。如果您没有对对象应用任何更改,那么返回对象的副本是没有意义的。这是对CPU的浪费。只需返回一个未更改的对象。
标签: javascript redux functional-programming redux-saga