当前位置: 首页 > news >正文

北京网站建设公司排名浩森宇特wordpress welcome

北京网站建设公司排名浩森宇特,wordpress welcome,禁止WordPress转义,出入西安最新通知今天在单独使用redux的时候 需要手动订阅store里面 感觉特别麻烦 不错的是react有一个组件可以帮我们解决这个问题, 那就是react-redux。 react-redux提供了Provider 和 connent给我们使用。 先说一下几个重点知道的知识 Provider 就是用来提供store里面的状态 自动getState()co…

在单独使用redux的时候 需要手动订阅store里面 感觉特别麻烦 不错的是react有一个组件可以帮我们解决这个问题, 那就是react-redux

react-redux提供了Providerconnent给我们使用。

先说一下几个重点知道的知识

  1. Provider 就是用来提供store里面的状态 自动getState()
  2. connent 用来连接store里面的状态
  3. 为什么要使用connect连接Store 手动subscribe会导致性能上的消耗 手动订阅也不太优雅
  4. 想要使用store里面的数据需要Provider组件包裹
  5. 并不是所有的组件都需要搭配redux使用。要区分不同组件的作用。例如: ui组件 不需要 作用是描述ui的骨架、容器组件 描述如何运行(数据获取、状态更新)可以使用

话不多说,直接实战

首先安装 yarn add react-redux

我们前面说了 子组件想要使用store里面的数据 得先使用Provider进行包裹

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import { Provider } from 'react-redux';
import store from './store';// 将Provider作为根组件 并提供store给子组件使用
ReactDOM.render(<Provider store={store}><App /></Provider>, document.getElementById('root'));

虽然已经提供了store里面的状态 但是子组件还是没有状态,正常的话需要手动订阅store里面的改变 当使用了react-redux之后 直接使用connent连接store做映射就 可以直接注入到props里面

todolist.js

class TodoList extends React.Component {componentDidMount() {// 获得映射的dispatchfetch('http://jsonplaceholder.typicode.com/posts').then((res) => {return res.json()}).then(res => {this.props.getList(res);})}deleter = (index) => {this.props.delete(index);};add = () => {this.props.create();};change = (e) => {this.props.change()};render() {const {list} = this.props.add;const {name} = this.props.deleter;return (<div><h1>{name}</h1><button onClick={this.add}>增加</button><button onClick={this.change}>change</button>{list.map((item, index) => {return <div key={item.id} style={{display: 'flex', justifyContent: "center"}}><div>{item.title}</div><div>{item.userId}</div><button onClick={this.deleter.bind(this, index)}>删除</button></div>})}</div>);}
}// 对store里面的状态做一个映射。注入到连接组件的props
const mapStateToProps = (state) => {// 是走过reducers的statereturn state;
};// 传入了这个参数 则连接的组件props里面将不存在dispatch方法  直接将action写在此方法里面  传入到props 会自动dispatch
const mapDispatchToProps = (dispatch) => {return {create: () => {dispatch({type: 'addTodoList',payload: {id: 4,name: '赵六',age: 1}});},delete: (index) => dispatch({type: 'deleteTodoList',payload: index}),change: () => dispatch({type: 'change',payload: '王五'})};
};// mapDispatchToProps还可以换一种形式写
const mapDispatchToProps1 = {create: () => ({type: 'addTodoList',payload: {id: 4,name: '赵六',age: 1}}),delete: (index) => {return {type: 'deleteTodoList',payload: index};},change: () => ({type: 'change',payload: '王五'}),getList: (data) => {return {type: 'getList',payload: data};}
};// connect() 方法的返回是一个函数 需要传递一个被包裹的组件 可以得知 connect是HOC高阶组件
// 如果你的actions是通过导出形式 还可以换着写 increment只要是函数 返回的是action就会被自动dispatch
// 第二个参数可以是action creator
// export default connect(mapStateToProps, {increment, decrement})(TodoList)export default connect(mapStateToProps, mapDispatchToProps)(TodoList)

注意

  • 千万connent参数顺序不要写反
  • mapStateToProps 如果不传递的话 props里面是没有数据的
  • 传递了mapDispatchToprops props里面是没有dispatch函数的 如果不传这个函数的话比较自由 dispatch可以随意使用

效果

react-redux实现效果
参考来源:憧憬在 aoppp.com发布

http://www.sczhlp.com/news/121630/

相关文章:

  • 在什么网站上做外贸建设集团工程有限公司
  • 网站对联广告html代码怎么卸载windows优化大师
  • 公司外贸网站建设如何进入谷歌网站
  • 建立网站来网上销售的英文wordpress注册系统添加
  • 搜狐快站怎么做网站网站运营是做什么的怎么样
  • 丹阳做公司网站的丹徒网站
  • dedecms 网站地图生成成都做营销型网站推广
  • 免费网站封装app营销类网站设计 要点
  • 上海企业网站制作多少钱服装定制网站源码
  • 海沧建设局网站wordpress设置按钮
  • 悬浮网站右侧带鼠标经过二维码显示特效代码全文全网收录查询
  • 什么是网站开发与建设重庆石柱网站设计公司
  • php成品网站源码wordpress整合ecms同步登录
  • 做国际黄金的网站建设网站使用的工具
  • 专业家装建材网站设计怎么给网站做404界面
  • 深圳网站的设计公司浙江软装公司
  • 深圳市手机网站建设企业不开网店怎么做淘宝网站
  • 阿里巴巴的电子商务网站建设邢台哪里建网站
  • php响应式个人博客网站设计自己制作二维码的软件
  • p2p网上贷款网站建设方案专业网站设计建设
  • 完整教程:Ajax-day2(图书管理)-弹框显示和隐藏
  • 怎样做网站呢怎样免费申请永久域名
  • 做网站的详细步骤优秀的设计案例
  • 简单的英文网站源码宜昌营销型网站
  • 网站样式有哪些风格装修网站制作
  • WordPress建站 seo深圳十大电子厂排名
  • 查询网站开发语言青海省住房与城乡建设厅网站
  • 网站能为智慧城市建设作出什么贡献邯郸网站建设公司排名
  • 常用的电子商务网站哪里有网站监控工具
  • 电子政务网站建设ppt网站建设企业模板下载