React学习之class组件

class组件

import React from 'react'
import ReactDom from 'react-dom'
class App extends React.Component{
	constructor(props,context){
		super(props,context)
	}//可以不写
	render(){
		return <div>
		</div>
	}
}
ReactDom.render(<App/>,document.getElementById("root"))

1.state和props
state是该组件私有的状态,props是父组件传给该组件的数据。this.props中的数据是只读的,不能修改。
react是单项数据流,数据改变并不能触发视图更新,只能手动触发。唯一方法是通过setState()
setState():大多数情况下为异步更新,只有原生事件绑定和定时器事件为同步更新。

2. 生命周期函数
getDerivedStateFromProps :将props属性合并到state中去,必须返回一个对象。
componentDidMount :DOM渲染完成之后执行,操作dom,发送ajax请求
shouldComponentUpdate(newProps,newState):控制组件是否更新,提升组件的渲染效率。当return false 时,不更新。
componentWillUpdate :dom更新完成之后触发
componentWillUnmount :组件销毁前,主要用来清除事件或定时器。

3. 上下文context:为了更方便的让子组件、孙子组件、孙孙子组件…来获取父组件的数据props.

老上下文:创造一个上下文,首先声明上下文中的数据类型,需要引入包import propTypes from 'prop-types'

父组件
import React from 'react'
import ReactDom from 'react-dom'
import propTypes from 'prop-types'
import Son from './son'
class Parent extends React.Component{
	static childContextTypes={
    	name:propTypes.string,
    	age:propTypes.number
	}
	getChildContext(){
    	return{
       		 name:'珠峰',
       		 age:10
    	}
	}
	render(){
		return <div>
			<Son/>
		</div>
	}
}
ReactDom.render(<Parent/>,document.getElementById("root"))
子组件:
import ReactDom from 'react-dom'
import propTypes from 'prop-types'
class Son extends React.Component{
	static contextTypes={
    	name:proTypes.string
	}//需要什么属性就接受什么属性
	render(){
		return <div>{this.context.name}
		</div>
	}
}
export default Son
  1. 新上下文,不用引入第三方包。
import React from 'react
let Context=React.createContext();
export default Context
//父组件
import React from 'react'
import ReactDom from 'react-dom'
import Child from './son'
import Context from './context'

class App extends React.Component{
   
    render(){
        console.log(Context)
        return <div>
            <Child/>
            {/* <Grandson/> */}
        </div>
    }
}
ReactDom.render(<Context.Provider value={{theme:"reed",title:'世界你好'}}>
<App/>
</Context.Provider>
,document.getElementById("root"))
//子组件
import React from 'react'
import Context from './context'
class Child extends React.Component {
    static contextType=Context
    render() {
        console.log(this);
        return <div>
            <p>{this.context.theme}</p>
            <p>{this.context.title}</p>
        </div>
    }
}
export default Child

另外还有一种方式见博客React Context的使用

后面应该会写redux的使用及其源码复现,以及react-redux的深入学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦咪唏

看到这里了,不留下点什么吗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值