React-使用react-redux
react-redux可以方便在react中使用redux,我们就可以忘记subscribe,只需要记住reducer,action和dispatch就可以了。react-redux提供Provider和connect两个接口。
- Provider组件应该在应用最外层,传入store即可,只用一次。
- Connect负责从外部获取组件需要的参数。
- Connect可以用装饰器的方式来写。
创建stroe的时候,把原本的<Todolist/>包裹在Provider里。
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import store from './store';
import TodoList from './TodoList.js';
//定义一个组件,就是一段jsx
//Provider 链接了store,那么Provider里所有的组件,也都能获取到store里的内容
const App = (
<Provider store={store}>
<TodoList/>
</Provider>
);
ReactDOM.render(App, document.getElementById('root'));
在组件里导出组件的时候换种写法,要用connect。理解为让TodoList与store做链接,逻辑规则在mapStateToProps和mapDispatchToProps里定,TodoList是个ui组件,导出的是个普通组件。
mapStateToProps:mapStateToProps把store里的数据映射到组件里,变成组件的props。它接受一个state做参数,返回一个对象。
mapDispatchToProps:把store.dispatch方法映射到props上,变成组件的props。它接受接受一个dispatch 做参数,返回一个对象
import React from 'react';
import { connect } from 'react-redux';
const TodoList=(props)=>{
const { inputValue , changeInpuValue ,btnClick , list , itemDelete}=props;
return(
<div>
<input type="text" value={inputValue} onChange={changeInpuValue}/>
<button onClick={btnClick}>提交</button>
<ul>
{
list.map((item,index)=>{
return <li key={index} onClick={itemDelete}>{item} </li>
})
}
</ul>
</div>
);
};
/*mapStateToProps把store里的数据映射到组件里,变成组件的props,接受一个state做参数,返回一个对象*/
const mapStateToProps=(state)=>{
return{
inputValue:state.inputValue,
list:state.list
}
}
/*store.dispatch方法挂载到props上,组件里的props如何对store做修改,接受一个dispatch 做参数,返回一个对象*/
const mapDispatchToProps=(dispatch)=>{
return{
changeInpuValue(e){
const action={
type:'change_input_value',
value:e.target.value
}
dispatch(action)
},
btnClick(){
const action={
type:'btn_click'
}
dispatch(action)
},
itemDelete(e){
console.log(e);
}
}
}
/*让TodoListu与store做链接,规则在mapStateToProps里边*/
export default connect(mapStateToProps,mapDispatchToProps)(TodoList);
React-使用react-redux的更多相关文章
- React,关于redux的一点小见解
最近项目做多页面应用使用到了,react + webpack + redux + antd去构建多页面的应用,本地开发用express去模拟服务端程序(个人觉得可以换成dva).所以在这里吐槽一下我自 ...
- 在React中使用Redux
这是Webpack+React系列配置过程记录的第六篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...
- 新手级配置 react react-router4.0 redux fetch sass
前言 最近公司来了几个实习生,刚好我手头没什么要紧事,然后领导让我带他们学习react, 为下一个react项目做基础. 然后随手写了几个demo,帮助他们了解正经项目如何去构建配置项目. 现在分享出 ...
- React 环境增加Redux ,React-Redux
引入 Redux 的目的, 状态管理! React-Redux 就是完成一些粘合剂的作用. 简而化之的理解就是将数据放在store 中维护, 操作逻辑放在reducer中去写. 更功利的表达就是: ...
- react系列(五)在React中使用Redux
上一篇展示了Redux的基本使用,可以看到Redux非常简单易用,不限于React,也可以在Angular.Vue等框架中使用,只要需要Redux的设计思想的地方,就可以使用它. 这篇主要讲解在Rea ...
- React学习之redux
在阅读本文之前,希望大家对以下知识点能提前有所了解并且上好厕所(文章有点长): 状态提升的概念 react高阶组件(函数) es6基础 pure 组件(纯函数) Dumb 组件 React.js的co ...
- react学习之redux和redux-react用法
前言 redux和react-redux的关系: redux就是一个存储数据的对象,并提供了获取/设置store中的属性的解决方案,react-redux是连接react和redux桥梁的封装. ...
- react中使用redux简易案例讲解
为什么我想要使用redux? 前段时间初步上手了react,最近在使用react的过程中发现对于组件之间通信的需求比较迫切,尤其是在axios异步请求后端数据的时候,这样的需求是特别强烈的!举个例子: ...
- [RN] React Native 使用 Redux 比较详细和深刻的教程
React Native 使用 Redux 比较详细和深刻的教程 React Native 使用 Redux https://www.jianshu.com/p/06fc18cef56a http:/ ...
- React项目使用Redux
⒈创建React项目 初始化一个React项目(TypeScript环境) ⒉React集成React-Router React项目使用React-Router ⒊React集成Redux Redux ...
随机推荐
- javascript arguments参数问题
function f(a, b, c){ alert(arguments.length); // result: "2" a = 100; alert(arguments[0]); ...
- loadrunner 脚本开发-执行操作系统命令
脚本开发-执行操作系统命令 by:授客 QQ:1033553122 思路: 用loadrunner system()函数 函数原型: int system( const char *string ); ...
- redis介绍 (8) window 下redis的集群(cluster命令)
前言: 前段时间我在centos上搭建过一次redis集群,那是借助ruby搭建,这次我介绍一种纯redis集群命令的方式去搭建[最后我会简单介绍ruby搭建]. redis集群搭建(三主三备): 准 ...
- C# MD5 加密
public static string MD5Encrypt(string clearText) { string result = string.Empty; byte[] byteArray = ...
- Vlc支持IE 360 低版本的Google浏览器
VLC 插件代码: <object type='application/x-vlc-plugin' pluginspage="http://www.videolan.org/" ...
- 简单易懂的程序语言入门小册子(1):基于文本替换的解释器,lambda演算
最近比较闲,打算整理一下之前学习的关于程序语言的知识.主要的内容其实就是一边设计程序语言一边写解释器实现它.这些知识基本上来自Programming Languages and Lambda Calc ...
- nginx配置基于域名、端口、IP的虚拟主机
1.基于域名的虚拟主机: 绝大多数企业对外提供服务的网站使用的都是基于域名的主机,通过不同的域名区分不同的虚拟主机. 首先我们进入安装nginxd的目录下:/application/nginx-1.6 ...
- RD340服务器安装windows2003系统
RD340服务器安装windows2003系统云修网
- <!DOCTYPE>标签与table高度100% (转)
<!DOCTYPE>标签可声明三种DTD类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档. 三种HTML文档类型: HTML 4.01 规定了三种文档类型:Strict.Tr ...
- Appium1.9.1 部署及结果检验
1.官网下载最新的 appium 2.点击 Download Appium 3.选择适用于自己操作系统的版本,我的是 windows版本,就选择如下红圈起的 4.点击安装,一直点 下一步 直到提示安装 ...