zoukankan      html  css  js  c++  java
  • [Redux] Rewrite reducer with Ramda Lens

    import {
      SET_STATUS,
      FETCH_FULFILLED,
      FETCH_FAILED,
      RESET,
    } from '../actions/beerActions'
    import lensProp from 'ramda/es/lensProp'
    import set from 'ramda/es/set'
    import compose from 'ramda/es/compose'
    
    const initialState = {
      data: [],
      status: 'idle', // 'idle' || 'pending' || 'success' || 'failure'
      messages: [],
    }
    
    const statusLens = lensProp('status')
    const dataLens = lensProp('data')
    const messagesLens = lensProp('messages')
    
    const setStatus = set(statusLens)
    const setData = set(dataLens)
    const setMessages = set(messagesLens)
    
    const fetchFulfilled = (data, state) => {
      return compose(
        setData(data),
        setStatus('success'),
        setMessages([]),
      )(state)
    }
    
    const reset = compose(
      setStatus('idle'),
      setMessages([]),
    )
    
    const fetchFailed = (messages, state) => {
      return compose(
        setStatus('failure'),
        setMessages([{ type: 'error', text: messages }]),
      )(state)
    }
    
    export function beersReducers(state = initialState, action) {
      switch (action.type) {
        case RESET: {
          return reset(state)
        }
        case SET_STATUS: {
          return setStatus(action.payload, state)
        }
        case FETCH_FULFILLED: {
          return fetchFulfilled(action.payload, state)
        }
        case FETCH_FAILED: {
          return fetchFailed(action.payload, state)
        }
        default:
          return state
      }
    }
  • 相关阅读:
    python 字典
    python set集合
    python封装和解构
    python 内置数据结构 切片
    CPU 上下文切换及案例分析
    怎么理解linux的平均负载及平均负载高后的排查工具
    Linux性能优化
    python 内置数据结构 字符串
    python内置数据结构
    python GC、分支、循环
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12806295.html
Copyright © 2011-2022 走看看