3.react组件todolist实例

16 篇文章 0 订阅

import React, { Component, Fragment } from 'react';

// import style from './style.css'

 

// import React from 'react'

// const Component = React.Component

 

class Todolist extends Component {

constructor(props) {

super(props);

this.state = {

inputValue: '',

list: []

}

}

 

handleOnChange(e) {

// console.log("事件目标对象", e.target.value)

// console.log("todolist组建对象",this)

this.setState({

inputValue: e.target.value,

})

}

 

handleSubmit() {

// console.log(this.state.list)

let todo = this.state.inputValue

//本方法时向数组最后添加元素并返回数组长度

// this.state.list.push(todo);

//用展开运算符 解构赋值

this.setState({

list: [...this.state.list, todo],

inputValue: ''

})

 

}

 

handleItemDelete(index) {

console.log(index);

//删除index下标的元素,删除1个 不写则删除后面所有 0则是不删除

// immutable 不直接修改state里面的值 react 不提倡

// this.state.list.splice(index,1);

// this.setState({

// list: [...this.state.list],

// })

const list = [...this.state.list]

list.splice(index, 1)

this.setState({

list,

})

}

 

 

 

render() {

return (

<Fragment>

<div>

{/*

花括号里面js代码 里面注释就可以安装js的注释方式 注意单行要单独一行 //

*/}

<label htmlFor="insertContent">输入内容:</label>

<input

id="insertContent"

//全局样式不需要引入

className='input'

type="text" value={this.state.inputValue}

// onChange={this.handleOnChange} /> this为undefined 但是会触发handleOnChange

// onChange={this.handleOnChange.bind(this)} /> 可以这样绑定

// onChange={(e) =>this.handleOnChange(e)} /> 用箭头函数 自动绑定

onChange={e => this.handleOnChange(e)} />

<button

// onClick={this.handleSubmit()} 只页面渲染调用方法

onClick={() => this.handleSubmit()}

>提交</button>

</div>

<ul>

{/* 用index 做key 不是很好? */}

{this.state.list && this.state.list.map((item, index) => {

console.log(item, index, 66)

return <li key={index} //为什么不能用箭头函数传参?

onClick={this.handleItemDelete.bind(this, index)}

//js显示html标签不需转义时 直接显示标签内容 注意两个下划线_

dangerouslySetInnerHTML={{ __html: item }}

// >{item}</li>

></li>

})}

</ul>

</Fragment>

);

}

}

// registerServiceWorker();

export default Todolist

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值