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))}
}
react-redux简单实现
最新推荐文章于 2024-09-17 13:42:29 发布