react组件2020-01-06

react组件2020-01-06_第1张图片
image.png

render放let后面
span可能有1000行,整个页面都写在一个结构里,很丑
划分区块解决,最简单方法就是函数,把整个页面放在函数里,然后把函数当标签来用,实际上不是标签,写的不算是html
,是XML语法,可以进一步简化成虚拟dom

function App(){
return 
//return后面不打回车
} function render(){ ReactDOM.render( React.createElement(App),// jsx可以直接写成, document.querySelector('#root') ) }

组件的构想。一堆标签用函数抱起来,再return出去,函数名就代表这一堆标签。
这样可以作复杂页面


react组件2020-01-06_第2张图片
image.png

把属性理解成对象的key和value,


image.png

正好和js的对象完美对应起来,这就是给函数传参
image.png

react的创举:1.虚拟dom 2.标签就是函数,函数就是对象,标签的属性就是函数的参数

不允许修改别人传给你的参数

react组件2020-01-06_第3张图片
image.png

最简单的一个表示app2标签的组件


如何接受参数


react组件2020-01-06_第4张图片
image.png

一般把接受的参数叫做props


react组件2020-01-06_第5张图片
image.png

this.props.name拿到了参数
props是由父类 extends React.Component构造的

react组件2020-01-06_第6张图片
image.png
constructor(props){
super(props)
this.state={}
}
this.props.name 

上面api都要背
react强制把this指向undefined


react组件2020-01-06_第7张图片
image.png

this.add的this是undefined
第一种解法,this.add.bind(this) 语义更明确
第二种 onClick={()=>this.add}


image.png

this.setState固定写法,props外部,state内部

react组件2020-01-06_第8张图片
image.png

setState优点缺点
可以对更新进行优化,自己render容易频繁调用,卡页面
setstate可以讲大批量的操作合并成一个然后render,减少更新的损耗


注意


react组件2020-01-06_第9张图片
image.png

setstate很有可能异步更新,这样写会只+1虽然写了两次+1
可以用函数回调解决多次设置的问题


react组件2020-01-06_第10张图片
image.png

你可能感兴趣的:(react组件2020-01-06)