react todolist 3

父组件TodoList.js

分成了三个子组件

TodoHeader,TodoInput,List

import React, { Component } from ‘react’;

import{TodoInput,TodoHeader,List} from ‘./index.js’

class TodoList extends Component {

constructor(){

super()

this.state={

title2:“今日事今日毕”,

todos:[{

id:1,

title:“吃饭”,

isComleted:true

},

{

id:2,

title:“学习”,

isComleted:true

},

{

id:3,

title:“睡觉”,

isComleted:false

},

]

}

}

render() {

return (

{this.state.title2}

);

}

addTodo=(todoTitle)=>{

console.log(‘子元素传值’,todoTitle)

//注意不能用push这样写,因为push返回的是数组的长度

// this.setState({

// todos:this.state.todos.concat({

// id:Math.random(),

// title:todoTitle,

// isComleted:false

// })

// })

//用push这样写

// const newTodos = […this.state.todos]

// newTodos.push({

// id:Math.random(),

// title:todoTitle,

// isComleted:false

// })

// this.setState({

// todos:newTodos

// })

//第三种新值添加进数组的方法

const newlist = {

id:Math.random(),

title:todoTitle,

isComleted:false

}

this.setState({

todos:[…this.state.todos,newlist]

})

}

//点击checkbox取反

onisComletedChange=(id)=>{

console.log(id)

const data = this.state.todos.map(item=>{

if(item.id===id){

item.isComleted=!item.isComleted

}

return item

})

this.setState({

todos:data

})

}

}

export default TodoList

TodoHeader.js

import React, { Component } from ‘react’;

export default class TodoHeader extends Component {

render() {

console.log(this.props) //{title: “待办事项”, children: “今日事今日毕”}

return (

{this.props.title}

{this.props.children}

);

}

}

TodoInput.js

import React, { Component,createRef } from ‘react’;

export default class TodoInput extends Component {

constructor(){

super()

this.state={

inputValue:‘’

}

this.handleAdd = this.handleAdd.bind(this)

this.handleKeyUp = this.handleKeyUp.bind(this)

//定义createRef

this.inputDom = createRef()

}

render() {

return (

<input type=“text”

value={this.state.inputValue}

onChange={this.handleInput.bind(this)}

onKeyUp={this.handleKeyUp}

结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

html5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值