react学习2
props,state与render函数的关系
react,父组件的state中的变量改变,则相应的render函数也会执行,返回新的视图,同时父组件的子组件通过props获取父组件的state的变量,当父组件的state状态改变的时候同时也会出发子
组件的render函数执行。
react ref的使用,vue中在html标签中设置ref,就可以操作该dom元素,react也是
TodoList:
import React,{Component,Fragment} from 'react'
import './style.css'
import TodoItem from './TodoItem'
class TodoList extends Component{
constructor (props) {
super(props)
this.state = {
inputValue:'' ,
list:[]
}
this.handleInputChange = this.handleInputChange.bind(this)
this.handlBtnClick = this.handlBtnClick.bind(this)
}
render () {
return (<Fragment>
<div>
{/*下面是input框*/}
<label htmlFor='arear'>输入内容</label>
<input value = {this.state.inputValue}
id='arear'
onChange = {this.handleInputChange}
className= 'input'
ref={(input) =>{this.input = input}}//这里设置ref是用es6函数定义ref这样就能够操作input标签通过this.input
/>
<button onClick = {this.handlBtnClick}>提交</button>
</div>
<ul>
{
this.state.list.map((item,index) => {
return (
<TodoItem content = {item}
key = {index}
index = {index}
deleteItem = {this.handleDelete.bind(this)}
/>
)
})
}
</ul>
</Fragment>
)
}
handleInputChange (e) {
//const value = e.target.value
const value = this.input.value // 这里通过ref操作dom获得input的value值不过尽量不操作dom,setState和ref使用时候,会出坑,因为setState 是异步的需要在红色箭头函数执行相应的代码
才能正确的显示所要的结果
this.setState((e) =>({
inputValue:value
}),() =>{
}
)
}
handlBtnClick () {
this.setState((prevState) =>({
list:[prevState.list,prevState.inputValue],
inputValue:''
}))
/* this.setState({
list:[...this.state.list,this.state.inputValue],
inputValue:''
})*/
}
handleDelete (index) {
const list = [...this.state.list];
list.splice(index,1);
this.setState(() =>({
list
}))
/* this.setState({
list
})*/
//console.log(index)
}
}
export default TodoList
react学习2的更多相关文章
- React学习笔记-1-什么是react,react环境搭建以及第一个react实例
什么是react?react的官方网站:https://facebook.github.io/react/下图这个就是就是react的标志,非常巧合的是他和我们的github的编辑器Atom非常相似. ...
- react学习小结(生命周期- 实例化时期 - 存在期- 销毁时期)
react学习小结 本文是我学习react的阶段性小结,如果看官你是react资深玩家,那么还请就此打住移步他处,如果你想给一些建议和指导,那么还请轻拍~ 目前团队内对react的使用非常普遍,之 ...
- React学习资料
以下是我整理的React学习资料,包括:React基础.Redux.reat-router, redux middleware, higher order components, React验证等, ...
- React学习笔记(一) 基础知识
现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我. React的基 ...
- React学习系列
React学习系列 系列学习react 翻译地址 https://scotch.io/tutorials/learning-react-getting-started-and-concepts 我是初 ...
- react学习笔记1--基础知识
什么是react A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES[React是一个用于构建用户界面的JavaScript库.] React之所以快, ...
- react 学习与使用记录
相关技术:webpack+react+react-router+redux+immutable 郭永峰react学习指南 1.git bash--windows命令行工具 --教程 下载地址 2. i ...
- 【JAVASCRIPT】React学习-JSX 语法
摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 JSX 语法 1. 定义 JSX 是javascript + xml 的合集,我们可以将javascript 与 ht ...
- 【JAVASCRIPT】React学习-如何构建一个组件
摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 组件化思想 组件就是 UI + UI 交互逻辑,组件有三个常规map , 分别为state 状态 . props 数据 ...
- 【JAVASCRIPT】React学习- 数据流(组件通信)
摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 一 组件通信如何实现 父子组件之间不存在继承关系 1.1 父=>子通信 父组件可以通过 this.refs.xx ...
随机推荐
- SQL Server获取星期几
上一周在解决一个Bug的时候,需要在SQL Server获取星期几的需求,在网上搜索了下,发现一篇好的文章,特转载下! 今天是星期几,例子 1: 1 SET LANGUAGE N'English' - ...
- 服务器对接码云webhooks
服务安装git php代码(外网必须可以访问) <?php //本地路径滚adminasdfdasfasdf $file = "/wwwroot/webhooksLog.txt&quo ...
- ISE_pll_ip的建立
创建clk的ip核以及设置PLL的时钟输出 原理:外部晶振输入50M的频率,由ip核输出想要的频率 1.新建工程model再在"芯片"名称上建立clk的ip核 2.设置输入写为50 ...
- verilog 中task用法
1.任务定义 任务定义的形式如下: task task_id; [declaration] procedural_statement endtask 其中,关键词 task ...
- App_Code目录类文件无法被调用的解决方法
1.选中类文件,在属性中的“生成操作”默认的“内容”改为“编译”就可以了. 2.重新生成解决方案
- 分布式-JOB(XXL-Job)
为什么使用xxl-job,不使用qz: 缺少补偿机制 不支持集群 不支持路由策略 统计任务执行 平台管理 监控,报警邮箱 幂等性:一次请求和多次请求得到相同的结果,不会因为多次的请求,导致最后的数据不 ...
- 洛谷P1040 加分二叉树(树形dp)
加分二叉树 时间限制: 1 Sec 内存限制: 125 MB提交: 11 解决: 7 题目描述 设一个n个节点的二叉树tree的中序遍历为(l,2,3,...,n),其中数字1,2,3,...,n ...
- UC登录功能:商户需要创建的表
1:类似PHP的hash_hmac DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `uc_session_hmacsha1`( `_secretkey ...
- 日志监控文件中获取ip,每一分钟统计一次,超过200次的计入黑名单
一.日志文件access.log #.要从日志里面找到1分钟之内访问超过200次的 #.每分钟都运行一次 #.读取文件内容,获取到ip地址 #.把每个ip地址存起来{} #.判断ip访问的次数是否超过 ...
- autocomplete初步使用
之前使用过autocomplete自动补全,只是简单的传入input框中要补全的数组,类似于 $('#id').autocomplete('[数组形式的补全数据]',{minChars: 0}); 只 ...