为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第2天 React实战

标签:
React

**课程名称:** React16.4 快速上手

**课程章节:第2章 React实战

课程讲师: Dell

课程内容:
1、首先创建一个todolist.js组件

import React from 'react'

class TodoList extends React.Component {

	render(){
		return (
			<div>
				todolist
			</div>
		)
	}
}

2、定义输入input还有渲染的ul

import React from 'react'

class TodoList extends React.Component {
	
	render(){
		return (
			<div>
				<div>
					<input  />
					<button>add </button>
				</div>
				<ul>
					<li>学习react</li>
					<li>学习vue</li>
				</ul>
			</div>
		)
	}
}

3、添加state,循环渲染state

import React from 'react'

class TodoList extends React.Component {
	constructor(props){
		super(props);
		this.state = {
			list:[
				'learn react',
				'learn english'
			],
		}
	}
	handleBthClick(){
		this.setState({
			list:[...this.state.list,this.state.inputValue],
		})
	}

	render(){
		return (
			<div>
				<div>
					<input />
					<button onClick={this.handleBthClick.bind(this)}>add </button>
				</div>
				<ul>
					{
·						this.state.list.map((item,index) => {
							return <li key={index} >{item}</li>
						})
					}
					
				</ul>
			</div>
		)
	}
}

4、对input添加绑定事件实现添加

import React from 'react'

class TodoList extends React.Component {
	constructor(props){
		super(props);
		this.state = {
			list:[
				'learn react',
				'learn english'
			],
			inputValue:''
		}
	}
	handleBthClick(){
		this.setState({
			list:[...this.state.list,this.state.inputValue],
			inputValue:''
		})
		this.state.list.push('hello world')
	}
	handleInputChange(e){]
		this.setState({
			inputValue:e.target.value
		})
	}
	render(){
		return (
			<div>
				<div>
					<input onClick={this.handleInputChange.bind(this)} />
					<button onClick={this.handleBthClick.bind(this)}>add </button>
				</div>
				<ul>
					{
·						this.state.list.map((item,index) => {
							return <li key={index} onClick={this.handleItemClick.bind(this)}>{item}</li>
						})
					}
					
				</ul>
			</div>
		)
	}
}

5、给每一个li删除事件

import React from 'react'

class TodoList extends React.Component {
	constructor(props){
		super(props);
		this.state = {
			list:[
				'learn react',
				'learn english'
			],
			inputValue:''
		}
	}
	handleBthClick(){
		this.setState({
			list:[...this.state.list,this.state.inputValue],
			inputValue:''
		})
		this.state.list.push('hello world')
	}
	handleInputChange(e){]
		this.setState({
			inputValue:e.target.value
		})
	}
	handleItemClick(index){
		const list = [...this.state.list]
		list.splice(index,1)
		this.setState({
			list:list
		})
		
	}
	render(){
		return (
			<div>
				<div>
					<input onClick={this.handleInputChange.bind(this)} />
					<button onClick={this.handleBthClick.bind(this)}>add </button>
				</div>
				<ul>
					{
·						this.state.list.map((item,index) => {
							return <li key={index} onClick={this.handleItemClick.bind(this,index)}>{item}</li>
						})
					}
					
				</ul>
			</div>
		)
	}
}

课程收获:
学习到了在react中需要在最外层嵌套一个外部标签

才可以正常的渲染,否则就会报错,利用onClick={this.handleBthClick}给元素添加点击事件,其中利用bind定义this,否则函数中的this使用的是元素本身,使用this.state定义数据,使用{this.state.list.map}对数据进行循环使用,使用循环的时候参数添加index,绑定key值,否则会报错,重新定义一个inputValue的值,添加后赋值为空,

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
2
获赞与收藏
23

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消