Reactnative Hook学习

hook:函数的形式代替原来的继承类的形式,并且使用预函数的形式管理state,有Hooks可以不再使用类的形式定义组件了。

React Hooks约定,钩子一律使用use前缀命名。所以,自己定义的钩子都要命名为useXXX。

常用四种hook:

useState()

useCOntext()

useEffect()

useReducer()

1、useState()状态管理

const  [ xxx,setXxx]=React.useState(initValue)

2、useContext()共享状态

3、useEffect()副作用,模拟类组件中的生命周期,类似回调

类组件在绑定事件、解绑事件、设定定时器、查找 dom 的时候,是通过 componentDidMount、componentDidUpdate、componentWillUnmount 生命周期来实现的,而 useEffect 会在组件每次 render 之后调用,就相当于这三个生命周期函数,只不过可以通过传参来决定是否调用。

useEffext(() =>{},[statevalue])

里面两个参数,第一个参数是要进行的异步操作第二个参数是一个数组,决定是否调用取决于第二个参数

1)、什么都不传,组件每次 render 之后 useEffect 都会调用,相当于 componentDidMount 和 componentDidUpdate

useEffect(() =>{})

2)、传入一个空数组[],只会在组件挂载后调用一次,相当于 componentDidMount 和 componentWillUnmount

useEffect(() =>{},[])

3)、传入一个数组,其中包括变量,只有这些变量变动时,useEffect 才会执行

useEffect(() =>{},[statevalue]),当statevalue变化时,才执行此函数

例如:

1、类似于componentDidMount的useEffect

const demo = ()=> {

useEffect=(() => {

//类似componentDidMount,通常在此调用api获取数据

},[])

2、类似于componentWillUnmount的useEffect

const demo=() => {

useEffect(() => {

return () => {

//类似于componentWillUnmount,通常用于清除副作用

}

},[])

}

3、类似于componentDidUpdate的useEffect

const demo = () => {

const [ count, setCount]=useState(0);

useEffect(() => {

//当count改变时,执行当前代码

},[count]) 

}

4、useReducer()Action管理

redux我们都知道,其原理是通过用户在页面中发起action,从而通过reducer方法来改变state,从而实现页面和状态的通信。

(state,action) => newstate

const [ state,dispatch] = useReducer(reducer,initialState)

reducer函数 和 状态的初始值 作为参数,返回一个数组,其中第一项为当前的状态值,第二项为发送action的dispatch函数

const reducer = (state,action) =>{

//逻辑

if(action.type==='add'){

return {

...state,count: state.count+1

}

}else{

rturn state

}

}

const addcount =() =>{

dispatch({

type:'add'

}

)

}

const [state,dispatch] =useReducer(reducer,{count:0})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值