useContext,useReducer构建redux

useContext和useReducer是react16.8之后新出的,用这两个可以构建一个redux,下面来看下

import React,{createContext}from 'react'
export default Context=createContext()
//reducer函数
function reducer(state=0,action){
	switch(action.type){
		case 'add':
			state=state+1;
			return state;
		case 'sub':
			state=state-1;
			return state;
		default:
			return state;
	}
}

import React,{useReducer} from 'react'
import reducer from './test.js'
import Context from 'context.js'
function Father(){
	const [state,dispatch]=useReducer(reducer,0)//useReducer接受两个参数,第一个是reducer函数                //,第二个是初始值
	return(
		<Context.Provider value={{state:state,dispatch:dispatch}}>
            <div>{state}</div>
			<Son></Son>
		</Context.Provider>
		
	)

}
import React,{useContext} from 'react'
import Context from './context.js'
export default function Son(){
	const {state,dispatch}=useContext(Context);
	
	return(<div>
        <span>{state}</span>
		<button onClick={()=>{dispatch({type:'add'})}}>
			点击
		</button></div>)
}

这样点击Son组件的按钮,Father和Son组件中的state值都会改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值