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 ...
随机推荐
- linux下钉钉,微信
google-chrome --app=https://im.dingtalk.com/ google-chrome --app=https://wx.qq.com/
- jquery修改input的值,vue获取不到的解决办法
$("input[name='aa']").val(2333) //触发一下该input的input事件 $("input[name='aa']")[0].di ...
- Centos 6.9 install Python3.7
# install python3sudo yum -y updatesudo yum -y install yum-utils yum install -y zlib-devel bzip2-dev ...
- python基础知识12---函数2
阅读目录 一 引子 二 定义函数 三 调用函数 四 函数的参数 五 练习题 一 引子 1 为何要用函数之不用函数的问题 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码, ...
- maven向本地仓库导入jar包
如果maven工程的依赖jar包在网上找不到,那么只能自己打包,然后传到本地仓库,可以使用如下命令 mvn install:install-file -DgroupId=com.redis.redis ...
- [ZZ]MTSC 2017 Mobile Testing@Google 演讲的感受
原文地址: https://testerhome.com/topics/9364 Mobile Testing@Google 其实在开始听谷歌的张南和潘岩开始演讲前,了解下 Google Test C ...
- leetcode70 爬楼梯 Python
组合数学Fibonacci 例3.4.1 (上楼梯问题)某人欲登上n级楼梯,若每次只能跨一级或两级,问他从地面上到第n级楼梯,共有多少种不同的方法? (解)设上到第n级楼梯的方法数为an.分类统计 ...
- php中cookie和session的总结
cookie: 设置cookie: setcookie("name","zhang","time()+3600"); 参数一:属性名 参数 ...
- Eclipse安装springsource-tool-suite插件及spring helloworld入门实例
转载至: https://www.cnblogs.com/aaron-shu/p/5156007.html 一.查看eclipse版本 Help-->About Eclipse,我的版本是4.4 ...
- Memcache,redis,rabbitMQ,SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...