最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React+Typescript項(xiàng)目環(huán)境搭建并使用redux環(huán)境的詳細(xì)過程

 更新時(shí)間:2023年09月21日 11:25:52   作者:深圳市有德者科技有限公司-耿瑞  
這篇文章主要介紹了React+Typescript項(xiàng)目環(huán)境搭建并使用redux環(huán)境的詳細(xì)過程,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前幾篇文章 我們的項(xiàng)目已經(jīng)開始功能漸漸完善了
那么 我們來說最后一個(gè)點(diǎn) redux這個(gè)并不需要我們多努力 其實(shí)官方文檔給到已經(jīng)算是很全面了

我們可以直接訪問地址 TypeScript 中文手冊(cè)中文手冊(cè)和官方是一樣的 而且對(duì)我們非常友好

我們會(huì)在左側(cè)導(dǎo)航欄中找到一個(gè) React 點(diǎn)進(jìn)去

在這里插入圖片描述

進(jìn)入之后 一直往下翻 我們就可以看到 Redux 部分

在這里插入圖片描述

我們直接 用他這個(gè)命令去項(xiàng)目終端安裝就好了 下面也講述了為什么不需要單獨(dú)再去導(dǎo)入Redux了

在這里插入圖片描述

我們這里在項(xiàng)目終端去引入

在這里插入圖片描述

這里需要注意一下版本哦 反正 我發(fā)現(xiàn) react開發(fā) 除了文檔不是特別健全之外 每個(gè)版本改動(dòng)都還是不小的 經(jīng)常出現(xiàn) 一個(gè)版本提升 就寫法完全不一樣了的事

在這里插入圖片描述

我們?cè)陧?xiàng)目src目錄下創(chuàng)建一個(gè)文件夾 叫 types下面創(chuàng)建一個(gè) index.tsx參考代碼如下

export interface IStoreState {
    languageName: string;
    enthusiasmLevel: number;
}

就是簡單導(dǎo)出了一個(gè)接口 接口限制要有兩個(gè)字段 languageName 字符串類型 enthusiasmlevel 數(shù)字類型

我們?cè)陧?xiàng)目src目錄創(chuàng)建一個(gè)文件夾 叫 constants
下面創(chuàng)建一個(gè) index.tsx文件
參考代碼如下

export const INCREMENT_ENTHUSIASM = 'INCREMENT_ENTHUSIASM';
export type INCREMENT_ENTHUSIASM = typeof INCREMENT_ENTHUSIASM;
export const DECREMENT_ENTHUSIASM = 'DECREMENT_ENTHUSIASM';
export type DECREMENT_ENTHUSIASM = typeof DECREMENT_ENTHUSIASM;

這里聲明了兩個(gè)常量 至于type的寫法 大家可以去看一下 ts命名空間的內(nèi)容
我們簡單說 通過type 聲明一個(gè)自己的字符串字面量類型

然后 我們?cè)僭陧?xiàng)目src目錄創(chuàng)建一個(gè)目錄 叫 actions
目錄下依舊創(chuàng)建一個(gè) 叫 index.tsx 的文件
參考代碼如下

import * as constants from '../constants'
export interface IIncrementEnthusiasm {
    type: constants.INCREMENT_ENTHUSIASM;
}
export interface IDecrementEnthusiasm {
    type: constants.DECREMENT_ENTHUSIASM;
}
export type EnthusiasmAction = IIncrementEnthusiasm | IDecrementEnthusiasm;
export function incrementEnthusiasm(): IIncrementEnthusiasm {
    return {
        type: constants.INCREMENT_ENTHUSIASM
    }
}
export function decrementEnthusiasm(): IDecrementEnthusiasm {
    return {
        type: constants.DECREMENT_ENTHUSIASM
    }
}

然后 我們?cè)僭趕rc目錄下創(chuàng)建 reducer 文件夾
下面還是一個(gè)index.tsx
參考代碼如下

import { EnthusiasmAction } from '../actions';
import { IStoreState } from '../types/index';
import { INCREMENT_ENTHUSIASM, DECREMENT_ENTHUSIASM } from '../constants/index';
export function enthusiasm(state: IStoreState, action: EnthusiasmAction): IStoreState {
  switch (action.type) {
    case INCREMENT_ENTHUSIASM:
      return { ...state, enthusiasmLevel: state.enthusiasmLevel + 1 };
    case DECREMENT_ENTHUSIASM:
      return { ...state, enthusiasmLevel: Math.max(1, state.enthusiasmLevel - 1) };
    default:
      return state;
  }
}

這就相當(dāng)于是我們之前 全局處理 接受/返回 的一個(gè)地方
我們分別寫了兩個(gè)事件 對(duì)應(yīng) 將 enthusiasmLevel 加一 和 減一
事件名就對(duì)應(yīng)我們上面定義的兩個(gè)變量值 DECREMENT_ENTHUSIASM與INCREMENT_ENTHUSIASM

然后 我們?cè)僭趕rc目錄下創(chuàng)建一個(gè)文件夾 store

然后下面再創(chuàng)建一個(gè) 文件 叫 index.tsx

import { createStore, Reducer } from 'redux';
import { enthusiasm } from '../reducer/index';
import { EnthusiasmAction } from '../actions/index';
import { IStoreState } from '../types/index';
const initialState: IStoreState = {
  enthusiasmLevel: 1,
  languageName: 'TypeScript'
};
const store = createStore<IStoreState, EnthusiasmAction, {}, {}>(enthusiasm as Reducer<IStoreState, EnthusiasmAction>, initialState);
export default store;

這個(gè) initialState 就是我們的數(shù)據(jù)來源了 里面有兩個(gè)值 分別是 enthusiasmLevel和languageName
接下來 我們重點(diǎn)就是關(guān)聯(lián)了

我們打開 src下的 index.tsx
引入

import { Provider } from "react-redux";
import store from "./store";

然后 在標(biāo)簽上 用上 Provider store 屬性 就用我們寫的 store

在這里插入圖片描述

然后 這里 我也有點(diǎn)懶 直接就給代碼寫到 App.tsx里吧

App.tsx編寫代碼如下

import * as React from "react";
import * as actions from './actions/index';
import { IStoreState } from './types/index';
import { connect } from 'react-redux';
export interface IProps {
  name: string;
  enthusiasmLevel?: number;
  onIncrement?: () => void;
  onDecrement?: () => void;
}
class App extends React.Component<IProps,any> {
  public render() {
    const { name,enthusiasmLevel,onIncrement,onDecrement } = this.props;
    return (
      <div className="App">
        <p>{ name }</p>
        <p>{ enthusiasmLevel }</p>
        <button onClick={ onIncrement }>+</button>
        <button onClick={ onDecrement }>-</button>
      </div>
    );
  }
}
export function mapStateToProps({ enthusiasmLevel, languageName }: IStoreState) {
  return {
    enthusiasmLevel,
    name: languageName,
  }
}
export function mapDispatchToProps(dispatch: any) {
  return {
    onDecrement: () => dispatch(actions.decrementEnthusiasm()),
    onIncrement: () => dispatch(actions.incrementEnthusiasm())
  }
}
export default connect(mapStateToProps, mapDispatchToProps)(App);

這樣 我們運(yùn)行起項(xiàng)目 會(huì)看到 name 和 enthusiasmLevel 的展示是正常的

在這里插入圖片描述

然后 我們操作 decrementEnthusiasm 和 incrementEnthusiasm 加減事件 我們會(huì)發(fā)現(xiàn)

雖然能夠正常執(zhí)行 但實(shí)際上 , 也是非常的好用啊

在這里插入圖片描述

到此這篇關(guān)于React+Typescript項(xiàng)目環(huán)境中搭建并使用redux環(huán)境的文章就介紹到這了,更多相關(guān)React+Typescript項(xiàng)目搭建使用redux環(huán)境內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React組件、狀態(tài)管理、代碼優(yōu)化的技巧

    React組件、狀態(tài)管理、代碼優(yōu)化的技巧

    文章總結(jié)了React組件設(shè)計(jì)、狀態(tài)管理、代碼組織和優(yōu)化的技巧,它涵蓋了使用Fragment、props解構(gòu)、defaultProps、key和ref的使用、渲染性能優(yōu)化等方面
    2024-11-11
  • react最流行的生態(tài)替代antdpro搭建輕量級(jí)后臺(tái)管理

    react最流行的生態(tài)替代antdpro搭建輕量級(jí)后臺(tái)管理

    這篇文章主要為大家介紹了react最流行的生態(tài)替代antdpro搭建輕量級(jí)后臺(tái)管理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Reactjs?+?Nodejs?+?Mongodb?實(shí)現(xiàn)文件上傳功能實(shí)例詳解

    Reactjs?+?Nodejs?+?Mongodb?實(shí)現(xiàn)文件上傳功能實(shí)例詳解

    今天是使用?Reactjs?+?Nodejs?+?Mongodb?實(shí)現(xiàn)文件上傳功能,前端我們使用?Reactjs?+?Axios?來搭建前端上傳文件應(yīng)用,后端我們使用?Node.js?+?Express?+?Multer?+?Mongodb?來搭建后端上傳文件處理應(yīng)用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-06-06
  • React表中顯示JSON數(shù)據(jù)demo

    React表中顯示JSON數(shù)據(jù)demo

    這篇文章主要為大家介紹了React表中顯示JSON數(shù)據(jù)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 使用React實(shí)現(xiàn)一個(gè)簡單的待辦任務(wù)列表

    使用React實(shí)現(xiàn)一個(gè)簡單的待辦任務(wù)列表

    這篇文章主要給大家介紹了使用React和Ant Design庫構(gòu)建的待辦任務(wù)列表應(yīng)用,它包含了可編輯的表格,用戶可以添加、編輯和完成任務(wù),以及保存任務(wù)列表數(shù)據(jù)到本地存儲(chǔ),文中有相關(guān)的代碼示例,需要的朋友可以參考下
    2023-08-08
  • 使用VSCode Debugger調(diào)試React項(xiàng)目的實(shí)現(xiàn)步驟

    使用VSCode Debugger調(diào)試React項(xiàng)目的實(shí)現(xiàn)步驟

    本文主要介紹了使用VSCode Debugger調(diào)試React項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • React避免不必要的重新渲染的方法示例

    React避免不必要的重新渲染的方法示例

    構(gòu)建高性能?React?應(yīng)用程序的關(guān)鍵之一是避免不必要的重新渲染,React?的渲染引擎是高效的,但防止在不需要的地方重新渲染仍然至關(guān)重要,在這篇文章中,我們將介紹常見錯(cuò)誤以及如何避免它們,需要的朋友可以參考下
    2024-10-10
  • React-Route6實(shí)現(xiàn)keep-alive效果

    React-Route6實(shí)現(xiàn)keep-alive效果

    本文主要介紹了React-Route6實(shí)現(xiàn)keep-alive效果,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-06-06
  • 基于useImperativeHandle的使用解析

    基于useImperativeHandle的使用解析

    這篇文章主要介紹了基于useImperativeHandle的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 淺析react里面如何封裝一個(gè)通用的Ellipsis組件

    淺析react里面如何封裝一個(gè)通用的Ellipsis組件

    這篇文章主要為大家詳細(xì)介紹了在react里面如何封裝一個(gè)通用的Ellipsis組件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12

最新評(píng)論

吐鲁番市| 永嘉县| 利川市| 吴江市| 宁远县| 肇州县| 远安县| 田阳县| 略阳县| 新化县| 长宁县| 泌阳县| 会东县| 闵行区| 本溪市| 昌图县| 图木舒克市| 昭平县| 武隆县| 朝阳县| 台北县| 探索| 定边县| 南雄市| 肃南| 汉源县| 兰考县| 大荔县| 新竹市| 肥西县| 旺苍县| 浙江省| 普兰县| 虞城县| 观塘区| 克东县| 商城县| 白水县| 琼中| 琼海市| 和田县|