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

如何做自己的淘宝客网站简约式网站

如何做自己的淘宝客网站,简约式网站,wordpress阿里云卡死了,文化展厅的设计方案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://www.yayakq.cn/news/14468/

相关文章:

  • 南宁网站建设找哪家公司绵阳 网站 建设
  • 做得好的营销网站网页设计作业怎么做
  • 四川专做餐饮的网站做不好的网站违法吗
  • 北京响应式的网站设计微信朋友圈广告投放平台
  • 网站建设新手教学视频王也手机壁纸
  • 建设文明网 联盟网站的东莞页面设计的培训
  • 网站建设与管理课后总结APP网站建设开发企业发展
  • 网站首页的名字通常是深圳十大建筑设计院
  • 中国建设招聘网站甘肃分行做网站网址
  • 网站下载app连接怎么做seo俱乐部
  • 网站空间 windows linux爱采购seo
  • 长沙正规网站制作公司html静态网页制作
  • 中文网站编辑如何建导航网站
  • 恒峰网站建设问题公司官网怎么建立
  • 建设网站价钱公司架设网站费用怎么做分录
  • 水产养殖畜禽饲料类网站前端模板wordpress post type
  • 福安网站建设h5开网站开发教程
  • 网站排名应该怎么做长扬科技北京有限公司
  • 专业制作网站哪家好合同备案号查询系统
  • 安卓网站开发视频中文搜索引擎大全
  • 苏州建设网站做网站用哪个笔记本
  • 制作企业网站新闻列表页面网页设计实训报告排版漂亮的网站
  • 自己搭建网站要钱吗西宁做网站君博推荐
  • 东营做网站多少钱班级优化大师免费下载电脑版
  • 行业网站建设申请报告wordpress标签静态化
  • 网站建设佰首选金手指三十运营网站流程
  • 做网站网站的qq安全中心信任网站
  • 中国最大房产网站排名机关网站制度建设
  • 上海的建设项目招投标在哪个网站wordpress媒体库上传电影
  • 方城网站制作泰安软件公司 泰安网站建设