########
一个简单的react demo react 必须引用react,react-dom和babel。 react创建虚拟dom; react-dom 就是把数据渲染出来; babel编译成浏览器可以识别的插件,由于react是jsx方式,需要进行编译;
react 不支持if else 但支持三元函数; 循环绑定的时候需要绑定一个key,和vue一样,作用于唯一;
react使用组件化,声明组件后,reactdom直接引用 创建组件需要继承React.Component声明,
react组件添加子节点的时候,用this.props.children来接收参数,但是需要用react自己内部封装的Reac.Children用法
react需要判断参数是否是是什么类型,可以引用prop-types这个js, 声明静态函数 propTypes 用法地址为: https://www.jianshu.com/p/8bd8a6e60e78
数据绑定有3种方法: 1.在创建组件的时 constructor里面就开始声明绑定方法名,并指定this; constructor(props) { super(props) this.handleClick=this.handleClick.bind(this); } 2.在点击的的按钮上就加上绑定方法名并且指定this;onClick={this.handleClicks.bind(this)} 3.用es6的箭头函数,因为箭头函数他连接上下文,可以获取到组件的this指向; handleClickhs=()=>{
}
按钮传值时的几种方法例如: this.handleClicks.bind(this,'传值')
this.handleClickhs(传值参数) handleClickhs=(参数)=>{
}
react渲染的时候 当值改变的时候需要重新改变值 就用this.setState({ 改变值 }) this.state.获取state的值 setState是异步操作 那么他不会同步改变, this.setState({ 改变值 },function(){ 改变得到的最新的值 })
用input方法都需要有个onchange方法来监听input框值;
react保留了js的关键字,所以样式class需要改变成className, for 变成htmlFor style样式需要用对象的形式 style={{opacity:this.state.opacity}} ,
说明的是react的声明周期
就是constructor的时候
挂载前 #componentWillMount:只执行一次,并且执行的时候,react未渲染完成, 渲染 #render:根据组件的props和state,return 一个React元素 挂载后 #componentDidMount:渲染完成后调用该方法,一般为调用接口;
#componentWillReceiveProps 检测组件参数props的改变,改变就会触发这个方法,初始化render时不会被调用
#shouldComponentUpdate 在组件接收到新的props或者state时被调用
#componentWillUpdate 在组件接收到新的props或者state但还没有render时被调用
#render 渲染
#componentDidUpdate 在组件完成更新后立即调用。在初始化时不会被调用。
#componentWillUnmount 在组件从 DOM 中移除之前立刻被调用
########################react最新声明周期############### #初始化 constructor #挂载阶段 getDerivedStateFromProps:每次渲染之前都会调用 reader 渲染 componentDidMount :只执行一次,并且执行的时候,react未渲染完成, #更新阶段 getDerivedStateFromProps:每次渲染之前都会调用 shouldComponentUpdate :在组件接收到新的props或者state时被调用。在初始化时或者使用forceUpdate时不被调用。 reader :渲染 getSnapshotBeforeUpdate:在最新的渲染数据提交给DOM前会立即调用 componendDidCatch:错误处理函数 componentDidUpdate:在组件完成更新后立即调用 #卸载阶段 componentWillUnmount 在组件从 DOM 中移除之前立刻被调用