07.React实现Todolist练习 (上)

一.效果图

目标效果图

664fb0523b5680e79072ce885aca68dd479.jpg

本章完成效果图

e5eb56ab5a2154f6ea862b8aed2537081e4.jpg

 

完整代码

import React  from 'react';

class Home extends React.Component {
    constructor(){

        super();  // 用在构造函数中,必须在使用this之前调用

        this.state = {                
            name:'张三',
            value:'我是一个表单'
        } 
    }
    run=(event)=>{
        // console.log()
        event.target.style.background="red"

        alert( event.target.getAttribute('id'))
    }

    setData=(event)=>{

       
        console.log(event);


        this.setState({

            name: event.target.value
        })
        
    }

    getData=()=>{

        // alert(this.state.name)


        alert(this.refs.msg.value);
    }

    keydown(e){
        console.log(e.keyCode);

        if(e.keyCode==13){
            alert('回车'+e.target.value);
        }

    }

    inputChage=(event)=>{
        
        this.setState({
            value: event.target.value

        })

    }

    render() {

        
        return (
            <div>

                


                <button id='btn' onClick={this.run}>执行事件</button>

                <br />
                <br />

                 <input type="text" onChange={this.setData} />

                 <br />
                 <br />


                 <input type="text"  ref="msg"/>

                 <button onClick={this.getData}>获取input的值</button>
                 <br />
                 <br />

                <input type="text" onKeyDown={this.keydown} />

                <br />
                 <br />


                {/* 双休数据绑定 */}


                <input type="text" value={this.state.value} onChange={this.inputChage} />

                {this.state.value}
                

                

            </div>
        );
    }
}

export default Home;

完整代码

import React  from 'react';

class TodoList extends React.Component{

    constructor(){

        super();  // 用在构造函数中,必须在使用this之前调用

        this.state = {                
         
            username:'',
            list: [

                {
                  title: '录制nodejs',
                  checked: true
                },
                {
                  title: '录制ionic',
                  checked: false
                },
                {
                    title: '录制nodejs11',
                    checked: true
                },
                {
                    title: '录制ionic1',
                    checked: false
                }
            ]
        } 
    }
    addData=()=>{
        // alert(this.refs.username.value);

        var temp=this.state.list;  /*获取list的值*/

        temp.push(this.refs.username.value);

        this.setState({  /*改变数据*/
            list:temp
        })

    }        
    removeData=(key)=>{

        // alert(key)
        var temp=this.state.list;  /*获取list的值*/

        temp.splice(key,1);

         this.setState({  /*重新复制*/
            list:temp
        })
        


    }


    checkboxChange=(key,checked)=>{


        console.log(key,checked)

        var list=this.state.list;


        list[key].checked=!checked;


        this.setState({

            list:list
        })

    }

    render() {

        
        return (
            <div>

                    <input type="text" ref="username"/>

                    <button onClick={this.addData}>+增加</button>

                    <br />

                    <hr />

                    <br />
                    <h2>进行中</h2>
                    <ul>
                        {

                            this.state.list.map((value,key)=>{

                                if(value.checked){
                                    return(

                                    
                                        <li key={key}>

                                            <input type="checkbox" checked={value.checked} onChange={this.checkboxChange.bind(this,key,value.checked)}/>
                                        
                                            {value.title}  
                                            
                                            
                                            ----- <button onClick={this.removeData.bind(this,key)}>删除</button> 
                                            
                                        
                                        </li>


                                        
                                    )
                                }

                            })
                        }
                    </ul>



                    <h2>已完成</h2>
                    <ul>
                        {

                            this.state.list.map((value,key)=>{

                                if(!value.checked){
                                    return(

                                    
                                        <li key={key}>

                                            <input type="checkbox" checked={value.checked} onChange={this.checkboxChange.bind(this,key,value.checked)}/>
                                        
                                            {value.title}  
                                            
                                            
                                            ----- <button onClick={this.removeData.bind(this,key)}>删除</button> 
                                            
                                        
                                        </li>                                        
                                    )
                                }

                            })
                        }
                    </ul>


                              

            </div>
        );
    }



}

export default TodoList;

 

转载于:https://my.oschina.net/glorylion/blog/3000940

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值