React基础练习 TodoList

React基础练习 TodoList

最终效果:
1:在输入框输入,点击Add,【正在准备的事情】增加一项
2:点击【正在准备的事情】的【X】,本项移入【已完成的事情】
3:点击【已完成的事情】的【X】,本项移入【正在准备的事情】

虽然效果的逻辑有些许的bug,但是操作无误,重在练习嘛!react小白,有错误欢迎指出。
在这里插入图片描述

import React from 'react';
import '../assets/css/todoList.scss'

class TodoList extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            input: [],
            delInput: [],
        };
    }
    finish(index) {
        let input = this.state.input;
        let delInput = this.state.delInput;
        delInput.push(input.splice(index, 1));
        this.setState({
            delInput: delInput,
        })
        this.setState({
            input: input,
        })
    }
    unfinish(index) {
        let input = this.state.input;
        let delInput = this.state.delInput;
        input.push(delInput.splice(index, 1));
        this.setState({
            delInput: delInput,
        })
        this.setState({
            input: input,
        })
    }
    submit() {
        let value = this.refs.userInput.value;
        let input = this.state.input;
        if (value) {
            input.push(value);
            this.setState({
                input: input,
            })
            this.refs.userInput.value = ''
        }
    }
    render() {
        return (
            <div className="todolist">
                <div className='banner'>
                    <div className="banner-input">
                        <input className='input' ref='userInput'></input>
                        <button className='add' onClick={() => this.submit()}>Add</button>
                    </div>
                </div>

                <div className='main'>
                    <h3>正在准备的事情</h3>
                    <ul className='list'>
                        {
                            this.state.input.map((item, index) => {
                                return (
                                    <li key={index}>{item} <span className='delete' onClick={() => this.finish(index)}>X</span></li>
                                )
                            })
                        }
                    </ul>
                </div>
                <div className='main'>
                    <h3>已完成的事情</h3>
                    <ul className='list'>
                        {
                            this.state.delInput.map((item, index) => {
                                return (
                                    <li style={{ backgroundColor: '#999' }} key={index}>{item} <p className='delete' onClick={() => this.unfinish(index)}>X</p></li>
                                )
                            })
                        }
                    </ul>
                </div>
            </div>
        );
    }
}

export default TodoList;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值