您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

使用源生操作react-redux

2026/1/12 10:11:49发布9次查看
这次给大家带来,使用源生操作react-redux的注意事项有哪些,下面就是实战案例,一起来看一下。
自己动手实现一个react-redux
之前试过自己动手实现一个redux,这篇blog主要记录动手实现一个react-redux的过程。
这个react-redux还有一点点小瑕疵,我以一个计数器作为例子来实现的。
这是目录结构:
这里的connect.js文件就是react-redux。
├─component│   connect.js│   counter.js│└─store    index.js
index.js:
import react from react;import reactdom,{render} from react-dom;import couter from ./component/counter;import {provider} from ./component/connect import store from ./store/index  reactdom.render(<provider store={store}><couter/></provider>,document.getelementbyid(root));
./store/index.js:
import {createstore} from redux;function reducer(state={number:0},action) {  switch (action.type){    case add:      return {number:state.number+action.count}    default:      return state;  }}export default createstore(reducer);
./component/connect.js:
import react from react;import proptypes from prop-types;//provider是一个组件 接受一个store属性 将其内容挂载在上下文context //这样后代才可以都有办法拿到 class provider extends react.component{  static childcontexttypes={    //设置上下文的类型是对象 store:proptypes.object }  getchildcontext(){    //获取并设置后代上下文的内容 return {store:this.props.store}  }  render(){    return this.props.children }}let connect=(mapstatetoprops,mapdispatchtoprops)=>(comp)=>{  return class proxy extends react.component{    static contexttypes={      store:proptypes.object }    constructor(props,context){      super(props);      //将参数mapstatetoprops 的解构赋值 代理组件的状态 this.setstate=mapstatetoprops(context.store.getstate())    }    componentdidmount(){      this.context.store.subscribe(()=>{        this.setstate(mapstatetoprops(this.context.store.getstate()))      })    }    render(){      return <comp {...this.state} {...mapdispatchtoprops(this.context.store.dispatch)}/>    }  }}export {provider,connect}
./component/counter.js:
import react from react;import {connect} from ./connect;export default class counter extends react.component{  constructor(props){    super(props);  }  render(){    return (      <p>        <button onclick={()=>{          this.props.add(5);        }}>+</button>        {this.props.n}      </p>    )  }}let mapstatetoprops=(state)=>{  return {n:state.number}};let mapdispatchtoprops=(dispatch)=>{  return {    add:(count)=>{      dispatch({type:add,count:count})    }  }}export default connect(mapstatetoprops,mapdispatchtoprops)(counter)
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
vue-cli组件导入使用步骤详解
vue怎么获得微信授权并登陆
以上就是使用源生操作react-redux的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product