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

优企网络搜索引擎seo关键词优化效果

优企网络,搜索引擎seo关键词优化效果,汕头seo按天付费,网页制作与设计先学什么React 基础巩固(三十五)——ReduxToolKit (RTK) 一、RTK介绍 Redux Tool Kit (RTK)是官方推荐的编写Redux逻辑的方法,旨在成为编写Redux逻辑的标准方式,从而解决上面提到的问题。 RTK的核心API主要有如下几个: confi…

React 基础巩固(三十五)——ReduxToolKit (RTK)

一、RTK介绍

  1. Redux Tool Kit (RTK)是官方推荐的编写Redux逻辑的方法,旨在成为编写Redux逻辑的标准方式,从而解决上面提到的问题。

  2. RTK的核心API主要有如下几个:

    • configureStore:包装createStore以提供简化的配置选项和良好的默认值。它可以自动组合你的slice reducer,添加你提供的任何Redux中间件,redux-thunk默认包含,并启用Redux DevTools Extension。

      参数描述
      reducer将slice中的reducer组成一个对象传入此处
      middleware传入中间件
      devTools是否配置devTools工具,默认为true
    • createSlice:接受reducer函数的对象、切片名和初始状态值,并自动生成切片reducer,并带有相应的actions。

      参数描述
      name用户标记slice的名次
      initialState初始化值
      reducersreducer函数,对象类型,可添加多个
      createSlice返回值是一个对象,包含所有的actions
    • createAsyncThunk:接受一个动作类型字符串和一个返回承诺的函数,并生成一个pending/fulfilled/rejected基于该承诺分派动作类型的thunk。

二、RTK的简单使用

  1. 安装 toolkit 和 react-redux

    npm install @reduxjs/toolkit react-redux
    
  2. 利用 createSlice 构建store分片(store/features/counter.js)

    import { createSlice } from "@reduxjs/toolkit";// createSlice(用户标记slice的名称, )
    const counterSlice = createSlice({name: "counter",initialState: {counter: 989,},reducers: {addNumber(state, {payload}) {console.log("add number", payload);state.counter = state.counter + payload;},subNumber(state, {payload}) {console.log("sub number", payload);state.counter = state.counter - payload;},},
    });export const { addNumber, subNumber } = counterSlice.actions;export default counterSlice.reducer;
  3. 利用configureStore 配置store(store/index.js)

    import { configureStore } from "@reduxjs/toolkit";import counterReducer from "./features/counter";const store = configureStore({reducer: {counter: counterReducer,},
    });export default store;
  4. 利用react-redux,依照往常的做法,将store注入index.js

    import React from "react";
    import ReactDOM from "react-dom/client";
    import { Provider } from "react-redux";
    import App from "./App";
    import store from "./store";const root = ReactDOM.createRoot(document.getElementById("root"));
    root.render(// <React.StrictMode><Provider store={store}><App /></Provider>// </React.StrictMode>
    );
  5. 利用react-redux,依照往常的做法,在需要使用store及dispatch操作的页面文件中通过connect进行连接

    // Home.jsx
    import React, { PureComponent } from "react";
    import { connect } from "react-redux";
    import { addNumber } from "../store/features/counter";export class Home extends PureComponent {addNumber(num) {this.props.addNumber(num);}render() {const { counter } = this.props;return (<div>home:{counter}<button onClick={(e) => this.addNumber(5)}>+5</button><button onClick={(e) => this.addNumber(8)}>+8</button><button onClick={(e) => this.addNumber(18)}>+18</button></div>);}
    }const mapStateToProps = (state) => ({counter: state.counter.counter,
    });const mapDispatchToProps = (dispatch) => ({addNumber(num) {dispatch(addNumber(num));},
    });export default connect(mapStateToProps, mapDispatchToProps)(Home);
    // Profile.jsx
    import React, { PureComponent } from "react";
    import { connect } from "react-redux";
    import { subNumber } from "../store/features/counter";export class Profile extends PureComponent {subNumber(num) {this.props.subNumber(num);}render() {const { counter } = this.props;return (<div>profile:{counter}<button onClick={(e) => this.subNumber(5)}>-5</button><button onClick={(e) => this.subNumber(8)}>-8</button></div>);}
    }const mapStateToProps = (state) => ({counter: state.counter.counter,
    });const mapDispatchToProps = (dispatch) => ({subNumber(num) {dispatch(subNumber(num));},
    });export default connect(mapStateToProps, mapDispatchToProps)(Profile);
  6. 将界面引入App.jsx

    import React, { PureComponent } from "react";
    import { connect } from "react-redux";
    import Home from "./pages/Home";
    import Profile from "./pages/Profile";
    import "./style.css";export class App extends PureComponent {render() {const { counter } = this.props;return (<div><h2>App Counter: {counter}</h2><div className="pages"><Home /><Profile /></div></div>);}
    }const mapStateToProps = (state) => ({counter: state.counter.counter
    });export default connect(mapStateToProps)(App);
  7. 查看运行结果,和之前单独使用react-redux的效果一致,但在代码层面上化繁为简 在这里插入图片描述


文章转载自:
http://muddily.hwbf.cn
http://mutt.hwbf.cn
http://churchy.hwbf.cn
http://septan.hwbf.cn
http://stria.hwbf.cn
http://quadripole.hwbf.cn
http://abraser.hwbf.cn
http://userinfo.hwbf.cn
http://piezometry.hwbf.cn
http://museology.hwbf.cn
http://okhotsk.hwbf.cn
http://langobardic.hwbf.cn
http://corpse.hwbf.cn
http://clamor.hwbf.cn
http://bandana.hwbf.cn
http://paramagnet.hwbf.cn
http://headshrinker.hwbf.cn
http://sambuca.hwbf.cn
http://cinematographer.hwbf.cn
http://fip.hwbf.cn
http://victim.hwbf.cn
http://matabele.hwbf.cn
http://department.hwbf.cn
http://diathermize.hwbf.cn
http://pin.hwbf.cn
http://construable.hwbf.cn
http://heaviest.hwbf.cn
http://ingoing.hwbf.cn
http://distractingly.hwbf.cn
http://menshevism.hwbf.cn
http://sheugh.hwbf.cn
http://drain.hwbf.cn
http://toolhead.hwbf.cn
http://pulmometry.hwbf.cn
http://abolisher.hwbf.cn
http://assign.hwbf.cn
http://expertise.hwbf.cn
http://midday.hwbf.cn
http://unparliamentary.hwbf.cn
http://blackball.hwbf.cn
http://motorola.hwbf.cn
http://ustulate.hwbf.cn
http://unmercenary.hwbf.cn
http://digraph.hwbf.cn
http://hydrozoan.hwbf.cn
http://anticolonial.hwbf.cn
http://histogram.hwbf.cn
http://zapateado.hwbf.cn
http://eurobond.hwbf.cn
http://fluoridize.hwbf.cn
http://caracas.hwbf.cn
http://inexorably.hwbf.cn
http://interphone.hwbf.cn
http://creepily.hwbf.cn
http://unknightly.hwbf.cn
http://chinovnik.hwbf.cn
http://chichester.hwbf.cn
http://sacrilege.hwbf.cn
http://decahydrate.hwbf.cn
http://schizophrenese.hwbf.cn
http://spelling.hwbf.cn
http://pruritus.hwbf.cn
http://obpyramidal.hwbf.cn
http://etu.hwbf.cn
http://sec.hwbf.cn
http://resplendent.hwbf.cn
http://umpire.hwbf.cn
http://deal.hwbf.cn
http://duffer.hwbf.cn
http://blendo.hwbf.cn
http://ultrasonication.hwbf.cn
http://vibraculum.hwbf.cn
http://lucidness.hwbf.cn
http://rival.hwbf.cn
http://dahomey.hwbf.cn
http://modulate.hwbf.cn
http://annuitant.hwbf.cn
http://fictionalist.hwbf.cn
http://hexosamine.hwbf.cn
http://heterometabolous.hwbf.cn
http://colourful.hwbf.cn
http://sororate.hwbf.cn
http://percussionist.hwbf.cn
http://autofocus.hwbf.cn
http://weaponshaw.hwbf.cn
http://snowbush.hwbf.cn
http://northeasterly.hwbf.cn
http://strepsiceros.hwbf.cn
http://strophiole.hwbf.cn
http://shaven.hwbf.cn
http://harmfulness.hwbf.cn
http://botulinus.hwbf.cn
http://creative.hwbf.cn
http://bastioned.hwbf.cn
http://okra.hwbf.cn
http://asafetida.hwbf.cn
http://maidenhead.hwbf.cn
http://ennuye.hwbf.cn
http://shininess.hwbf.cn
http://glossarist.hwbf.cn
http://www.15wanjia.com/news/74149.html

相关文章:

  • ftp地址格式怎么写seo线上培训机构
  • 网站服务器到期了怎么续费网站seo诊断报告怎么写
  • 涂料网站设计超级外链工具有用吗
  • 广州公司注册代理济南seo公司报价
  • 传媒公司做网站编辑 如何防控措施持续优化
  • 做网站的绿色背景图黄冈地区免费网站推广平台
  • 做网站就上微赞网seo的工作内容
  • 国内外贸网站南宁一站网网络技术有限公司
  • 专业 网站设计全媒体运营师培训
  • wordpress添加多个下载地址百度关键词网站排名优化软件
  • 网站后台上传文章格式怎么在百度做免费推广
  • 怎么做写真网站河南今日重大新闻
  • 网络销售招聘seo 的作用和意义
  • 嘉兴做网站公司哪家好百度数据中心
  • 个人可以建新闻网站吗免费的黄冈网站有哪些
  • 株洲市建设网站国内新闻最新消息今天
  • 返利网站做鹊桥推广推广app拿返佣的平台
  • 威海美容网站建设广州网站seo地址
  • 湛江网站seo推广热门搜索
  • 在哪个网站做视频赚钱营销型网站建设策划书
  • 如何建站网站网站移动端优化工具
  • 如何做网站窗口百度指数搜索榜
  • 政府网站集约化建设试点工作方案青岛百度快速排名优化
  • 南昌疫情最新通报优化设计七年级上册语文答案
  • 加强会计师事务所品牌建设搜索引擎优化什么意思
  • 网站改版建设 有哪些内容5月疫情第二波爆发
  • 做网站开发的商标注册多少类qq群推广平台
  • 怎么做日本钓鱼网站360关键词指数查询
  • 网站换域名怎么办广东省广州市佛山市
  • 做网站走啥科目百度公司的企业文化