react系列(五)在React中使用Redux
上一篇展示了Redux的基本使用,可以看到Redux非常简单易用,不限于React,也可以在Angular、Vue等框架中使用,只要需要Redux的设计思想的地方,就可以使用它。 安装React Reduxyarn add redux yarn add react-redux 有两个概念: 展示组件
容器组件
在我们的项目中,一般来说,会编写很多展示组件,少量的容器组件来包裹这些展示组件。 import React from ‘react‘; const Counter = ({ count }) => ( <p>当前计数为:<span style={{color: ‘red‘}}>count</span></p> ) export default Counter; 一般来说,容器组件就是通过store.subscribe传入回调,订阅store的变化,再去把值通过props传入各个组件中。 connect([mapStateToProps],[mapDispatchToProps],[mergeProps],[options]) mapStateToProps是一个Function,用来监听Redux Store的变化,将store的值,映射为对应的props属性。 const mapStateToProps = ({count}) => {count}; // 或者 const mapStateToProps2 = (state) => { count: state.count } 接下来生成一个容器组件。 import { connect } from ‘react-redux‘; const ConnectCounter = connect( mapStateToProps )(Counter); export default ConnectCounter; 接下来是按钮组件,按钮组件既需要展示,又有数据交互,做成混合组件。 const mapDispatchToProps = dispatch => { return { plus: () => dispatch({ type: ‘PLUS‘ }) } } // 或者结合上篇提到的bindActionCreators合成一个对象 function plus() { return { type: "PLUS" }; } function minus() { return { type: "MINUS" }; } const mapDispatchToProps2 = dispatch => { return bindActionCreators({ plus,minus },dispatch) } import React from ‘react‘; let Button = ({plus,minus}) => { return ( <> <button onClick={plus}>{‘plus‘}</button> <button onClick={minus}>{‘minus‘}</button> </> ) }; Button = connect(()=>{},mapDispatchToProps2)(Button); export default Button; 最后,提供一个Provider用来提供全局store。完整例子在这里-codesandbox。 感谢阅读。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c# – .NET …如何使用平面文件进行TDD
- 在sqlite中怎么统计本周本月数据
- c# – 使用mvc 2010在SQL Server上上传/下载pdf文件
- 结合配置文件、反射完善控制反转(IoC)、依赖注入(DI)
- ruby-on-rails – Rails中的ActiveRecord中有多个sum()
- 百度 flash html5自切换 多文件异步上传控件webuploader基本
- FusionCharts+flash设置div的层次
- ruby-on-rails – 如何使用paperclip处理多种文件类型
- swift – MFMailComposeViewController navigationBar自定义
- 栈的压入、弹出序列问题解决