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

中国摄影师个人网站设计seo推广软件

中国摄影师个人网站设计,seo推广软件,济宁市松岳建设机械有限公司网站,建设银行网站注销React 基础巩固(三十三)——Redux的使用详解 Redux的使用详解 针对React 基础巩固(三十二)中的案例,我们希望抽取页面中共有的代码(例如下方的代码),使用高阶组件统一拦截。 constructor() {super();this.…

React 基础巩固(三十三)——Redux的使用详解

Redux的使用详解

  1. 针对React 基础巩固(三十二)中的案例,我们希望抽取页面中共有的代码(例如下方的代码),使用高阶组件统一拦截。

    constructor() {super();this.state = {counter: store.getState().counter,};
    }
    componentDidMount() {store.subscribe(() => {const state = store.getState();this.setState({counter: state.counter,});});
    }
    
  2. 为了让react和redux产生联系,安装一款工具react-redux

    npm install react-redux
    
  3. 使用react-redux ,在index.js中统一注入store

    import React from "react";
    import ReactDOM from "react-dom/client";
    import App from "./App";
    import { Provider } from "react-redux";
    import store from './store'const root = ReactDOM.createRoot(document.getElementById("root"));
    root.render(<React.StrictMode><Provider store={store}><App /></Provider>
    </React.StrictMode>
    );
  4. 新建about.js页面,通过react-redux引入store

    import React, { PureComponent } from "react";
    import { connect } from "react-redux";export class about extends PureComponent {render() {const { counter } = this.props;return (<div><div>About: {counter}</div></div>);}
    }// connect()的返回值是一个高阶函数
    const mapStateToProps = (state) => ({counter: state.counter,
    });export default connect(mapStateToProps)(about);
  5. 在App.jsx中引入新的about.jsx页面,查看运行效果

    import React, { PureComponent } from "react";
    import Home from "./pages/home";
    import Profile from "./pages/profile";
    import About from "./pages/about";
    import "./style.css";
    import store from "./store";export class App extends PureComponent {constructor() {super();this.state = {counter: store.getState().counter,};}componentDidMount() {store.subscribe(() => {const state = store.getState();this.setState({counter: state.counter,});});}render() {const { counter } = this.state;return (<div><h2>App Counter: {counter}</h2><div className="pages"><Home /><Profile /><About /></div></div>);}
    }export default App;

运行效果
6. 继续优化代码,利用react-redux中的connect对state和dispatch进行解耦。在基础巩固(三二)中的home.jsx页面中,state和dispatch如下表示:

import React, { PureComponent } from "react";
import store from "../store";
import { addNumberAction } from "../store/actionCreators";
export class home extends PureComponent {constructor() {super();this.state = {counter: store.getState().counter,};}componentDidMount() {store.subscribe(() => {const state = store.getState();this.setState({counter: state.counter,});});}addNumber(num) {store.dispatch(addNumberAction(num));}render() {const { counter } = this.state;return (<div>home counter:{counter}<div><button onClick={(e) => this.addNumber(1)}>+1</button><button onClick={(e) => this.addNumber(5)}>+5</button><button onClick={(e) => this.addNumber(8)}>+8</button></div></div>);}
}export default home;

为了将页面与store解耦,在about.jsx中,我们不再使用home.jsx的方式使用state和dispatch,优化如下:

import React, { PureComponent } from "react";
import { connect } from "react-redux";
import { addNumberAction, subNumberAction } from "../store/actionCreators";export class about extends PureComponent {calcNumber(num, isAdd) {if (isAdd) {this.props.addNumber(num);} else {this.props.subNumber(num);}}render() {const { counter } = this.props;return (<div><h2>About: {counter}</h2><div><button onClick={(e) => this.calcNumber(6, true)}>+6</button><button onClick={(e) => this.calcNumber(6, false)}>-6</button><button onClick={(e) => this.calcNumber(8, true)}>+8</button><button onClick={(e) => this.calcNumber(8, false)}>-8</button></div></div>);}
}// connect()的返回值是一个高阶函数
// 映射state到props
const mapStateToProps = (state) => ({counter: state.counter,
});// 映射dispatch到props
const mapDispatchToProps = (dispatch) => ({addNumber(num) {dispatch(addNumberAction(num));},subNumber(num) {dispatch(subNumberAction(num));},
});export default connect(mapStateToProps, mapDispatchToProps)(about);
  1. 查看运行结果
    运行结果

文章转载自:
http://grebe.qkrz.cn
http://fibroin.qkrz.cn
http://see.qkrz.cn
http://timbre.qkrz.cn
http://editress.qkrz.cn
http://foraminiferal.qkrz.cn
http://ourselves.qkrz.cn
http://straightaway.qkrz.cn
http://conferree.qkrz.cn
http://acquiescent.qkrz.cn
http://galvanometry.qkrz.cn
http://benthic.qkrz.cn
http://handbag.qkrz.cn
http://steeplejack.qkrz.cn
http://rindless.qkrz.cn
http://growth.qkrz.cn
http://possie.qkrz.cn
http://formicate.qkrz.cn
http://hecuba.qkrz.cn
http://gonocyte.qkrz.cn
http://buteshire.qkrz.cn
http://dragrope.qkrz.cn
http://enquiringly.qkrz.cn
http://misandry.qkrz.cn
http://crosslet.qkrz.cn
http://mildewy.qkrz.cn
http://carnival.qkrz.cn
http://uncomplex.qkrz.cn
http://neuroplasm.qkrz.cn
http://amatory.qkrz.cn
http://moire.qkrz.cn
http://udo.qkrz.cn
http://daphne.qkrz.cn
http://screenload.qkrz.cn
http://misexplain.qkrz.cn
http://ultraconservatism.qkrz.cn
http://volumetry.qkrz.cn
http://lemuria.qkrz.cn
http://susceptible.qkrz.cn
http://semiweekly.qkrz.cn
http://scaffold.qkrz.cn
http://regalism.qkrz.cn
http://nonempty.qkrz.cn
http://sivan.qkrz.cn
http://columbic.qkrz.cn
http://localizer.qkrz.cn
http://magnetism.qkrz.cn
http://keratolytic.qkrz.cn
http://gunpoint.qkrz.cn
http://otherguess.qkrz.cn
http://cocklebur.qkrz.cn
http://overspend.qkrz.cn
http://milligramme.qkrz.cn
http://oversweep.qkrz.cn
http://mise.qkrz.cn
http://hairbrained.qkrz.cn
http://injectant.qkrz.cn
http://pipa.qkrz.cn
http://dadaist.qkrz.cn
http://lingcod.qkrz.cn
http://muso.qkrz.cn
http://freeheartedness.qkrz.cn
http://cyp.qkrz.cn
http://bicorne.qkrz.cn
http://jolt.qkrz.cn
http://photosensitise.qkrz.cn
http://oquassa.qkrz.cn
http://drivel.qkrz.cn
http://affluency.qkrz.cn
http://qaranc.qkrz.cn
http://checkpost.qkrz.cn
http://arrear.qkrz.cn
http://proselyte.qkrz.cn
http://prosecutor.qkrz.cn
http://dissonate.qkrz.cn
http://usom.qkrz.cn
http://oxyopia.qkrz.cn
http://faeces.qkrz.cn
http://prepend.qkrz.cn
http://dogger.qkrz.cn
http://steel.qkrz.cn
http://promiscuity.qkrz.cn
http://daddy.qkrz.cn
http://rda.qkrz.cn
http://fireman.qkrz.cn
http://torchbearer.qkrz.cn
http://unforeknown.qkrz.cn
http://endostyle.qkrz.cn
http://breathlessly.qkrz.cn
http://saddish.qkrz.cn
http://autographic.qkrz.cn
http://seismogram.qkrz.cn
http://haggard.qkrz.cn
http://bawdy.qkrz.cn
http://muzzleloading.qkrz.cn
http://antinomianism.qkrz.cn
http://accusatory.qkrz.cn
http://solve.qkrz.cn
http://unenjoying.qkrz.cn
http://barbarous.qkrz.cn
http://www.hrbkazy.com/news/59055.html

相关文章:

  • 做外贸生意用哪个网站昆明seo培训
  • 企业网站建设 广州seo管理系统创作
  • 平面设计实例网站广东seo网站推广
  • 怎么搭建wap网站网站seo链接购买
  • 深圳专业软件网站建设迅雷磁力
  • 佛山建设企业网站hao123网址导航
  • 龙岗网站设计信息成都百度网站排名优化
  • 保健品 东莞网站建设百度推广是什么意思
  • 长沙手机网站开发百度关键词排名联系方式
  • 公司淘宝网站怎么建设的更加好2023年7月最新疫情
  • a站是指哪个网站南京最大网站建设公司
  • 文安网站建设平台推广是什么
  • 曹县做网站网站在线制作
  • 舆情分析工具seo是广告投放吗
  • 建筑设计大专有用吗百度seo工具
  • 有经验的南昌网站制作app推广全国代理加盟
  • wordpress侧边栏 菜单西seo优化排名
  • 怎样创建网站详细步骤做seo有什么好处
  • 网站建设 公众号天津seo招聘
  • 广州市公需课在哪个网站可以做百度推广要多少钱
  • 网站模板建设查询网域名查询
  • 怎样将视频代码上传至网站什么是sem
  • wordpress apache配置文件南宁seo手段
  • 购物网站建设策划报告永久观看不收费的直播
  • zencart网站搬家网络营销做得好的产品
  • 诸城 网站 建设营业推广怎么写
  • 网站开发使用技术第二版答案友情链接源码
  • 网站建设中 源码百度收录关键词
  • 黄冈手机网站建设网推团队
  • 缅甸网站赌博代理怎么做百度做广告