Redux入门案例todo

redux入门案例写在一个页面中实现,增加数据与删除数据(官方版的简写)[忽视项目中的命名]

'use strict';
import React,{Component} from 'react';
import {createStore} from "redux";

function add(text) {
    return{
        type:"ADD",
        value:text,
    }
}
function reduce(arg) {
    return{
        type:"DE",
        value:arg,
    }
}
function todo(state=[],action){
    switch (action.type){
        case "ADD":
            return [...state,action.value];
        case "DE":
            return state.filter((item,index)=>{
                return item != action.value;
            })
        default:
            return state
    }
}

//创建store
let store = createStore(todo);

export default class Todo extends Component{
    constructor(props){
        super(props);
        this.state = {
            data:[]
        }
        this.add1 = this.add1.bind(this);
    }
    add1(){
        let dom = this.refs.input
        store.dispatch(add(dom.value))
        dom.value = "";
    }
    delete(arg){
        store.dispatch(reduce(arg))
    }
    componentWillMount(){
        store.subscribe(()=>{
            this.setState({
                data:store.getState()
            })
        })
    }
    render(){
        return(
            <div>
                <p>
                    <input type="text" ref="input"/>
                    <input type="button" value="新增" onClick={this.add1}/>
                </p>
                <ul>
                    {
                        this.state.data.map((item,index)=>(
                            <li key={`list-${index}`}>
                                <span>{item}</span>
                                -------------
                                <a href="javascript:;" onClick={this.delete.bind(this,item)}>x</a>
                            </li>
                        ))
                    }
                </ul>
            </div>
        )
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水痕01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值