Как я могу сделать это с функциональным программированием? - PullRequest
0 голосов
/ 06 января 2019

В отношении функционального программирования, когда я собираюсь удалить серию с помощью саг, правильно ли создавать новый объект для 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))
}  
}

Как вариант лучше использовать?

1 Ответ

0 голосов
/ 08 января 2019

Если вы говорите об неизменности данных в функциональном программировании, вам не нужно создавать мелко скопированный объект для вашего примера, предполагая, что removeSerieSuccess getSeries и т. Д. Должны быть чистыми (или, по крайней мере, не мутировать serie, которые получают прошло).

А когда вы видите, что люди делают мелкое копирование, прежде чем переходить к другой функции, как в редукторном редукторе, потому что легче обнаружить изменения, в которых вы можете просто проверить по ссылке, что невероятно полезно в react-redux, где агрессивный shouldComponentUpdate позволяет избежать ненужное повторное отображение. Но на самом деле избыточность не означает, что требует , чтобы редуктор был чистым, но рекомендуется иметь лучшую предсказуемость.

...