react-redux简单实现

import React from,{useState,useContext} 'react'
const Context = React.createContext()
export const Provide = props =>{
	return (
	<Context.Provide value={props.store}> 
		props.children
	</Context.Provide>
	)
}
export const connect = (
mapStateToProps=state=>state,
mapDispatchToProps={}) => {
	return Cmp => {
		return ()=>{
			const store =  useContext(Context)
			const getProps=()=>{
				const getProps = mapStateToProps(store.getStore());
				const dispatchProps = bindActionCreators(mapDispatchToProps,store.dispatch);
				return {
				...stateProps,
				...dispatchProps,
				}
			}
			useEffect(()=>{
				store.subscribe(()=>{
					setProps({...props,...getProps()})
				})
			})
			const [props,setProps] = useState({...getProps()})
			return <Cmp {...props}/>
		}
	}
}
function bindActionCreators(creators,dispatch){
	return Object.keys(creators).reduceRight((ret item)=>{
		ret[ietm] = bindActionCreator(creators[ietm],dispatch)
		return ret
	},{})
}
function bindActionCreator(creator,dispatch){
	return (...args)=>{dispatch(creator(...args))}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值