zoukankan      html  css  js  c++  java
  • 对react的redux的研究(一)

     
    action types
     
    export const ADD_TODO = 'ADD_TODO'
    export const TOGGLE_TODO = 'TOGGLE_TODO'
    export const SET_VISIBILITY_FILTER = 'SET_VISIBILITY_FILTER'
     
    other constants
     
    export const VisibilityFilters = {
    SHOW_ALL: 'SHOW_ALL',
    SHOW_COMPLETED: 'SHOW_COMPLETED',
    SHOW_ACTIVE: 'SHOW_ACTIVE'
    }
     
    action creators
    export function addTodo(text) {
    return { type: ADD_TODO, text }
    }
    export function toggleTodo(index) {
    return { type: TOGGLE_TODO, index }
    }
    export function setVisibilityFilter(filter) {
    return { type: SET_VISIBILITY_FILTER, filter }
    }

     reducers

    import { combineReducers } from 'redux'
    import {
    ADD_TODO,
    TOGGLE_TODO,
    SET_VISIBILITY_FILTER,
    VisibilityFilters
    } from './actions'
    const { SHOW_ALL } = VisibilityFilters
     
    function visibilityFilter(state = SHOW_ALL, action) {
    switch (action.type) {
    case SET_VISIBILITY_FILTER:
    return action.filter
    default:
    return state
    }
    }
     
     
    function todos(state = [], action) {
    switch (action.type) {
    case ADD_TODO:
    return [
    ...state,
    {
    text: action.text,
    completed: false
    }
    ]
    case TOGGLE_TODO:
    return state.map((todo, index) => {
    if (index === action.index) {
    return Object.assign({}, todo, {
    completed: !todo.completed
    })
    }
    return todo
    })
    default:
    return state
    }
    }
    const todoApp = combineReducers({
    visibilityFilter,
    todos
    })
    export default todoApp
     
     
    import {
    addTodo,
    toggleTodo,
    setVisibilityFilter,
    VisibilityFilters
    } from './actions'
    // Log the initial state
    console.log(store.getState())
    // Every time the state changes, log it
    // Note that subscribe() returns a function for unregistering the listener
    const unsubscribe = store.subscribe(() =>
    console.log(store.getState())
    )
    // Dispatch some actions
    store.dispatch(addTodo('Learn about actions'))
    store.dispatch(addTodo('Learn about reducers'))
    store.dispatch(addTodo('Learn about store'))
    store.dispatch(toggleTodo(0))
    store.dispatch(toggleTodo(1))
    store.dispatch(setVisibilityFilter(VisibilityFilters.SHOW_COMPLETED))
    // Stop listening to state updates
    unsubscribe()

     

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

     

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Linus:利用二级指针删除单向链表
    mysql 主从错误以及监控
    高性能Mysql主从架构的复制原理及配置详解
    echarts的tooltip 使用formatter后,设置小圆点
    echarts定点缩放地图 && 监听缩放与拖曳事件
    echarts重新绘制图表。解决下钻地图,在平移和缩放后,下钻到下一级时生成的地图会跑到容器外面去。
    Echarts实现地图下钻+对应区域数据展示+右键返回上一级
    在生产环境清除console.log
    js编辑器--css 防止元素被切
    text-decoration 莫名其妙的覆盖子元素css
  • 原文地址:https://www.cnblogs.com/zhouyideboke/p/8855096.html
Copyright © 2011-2022 走看看