亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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;
}

就是簡(jiǎn)單導(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)容
我們簡(jiǎn)單說 通過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使用PropTypes實(shí)現(xiàn)類型檢查功能

    React使用PropTypes實(shí)現(xiàn)類型檢查功能

    這篇文章主要介紹了React高級(jí)指引中使用PropTypes實(shí)現(xiàn)類型檢查功能的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • React?保留和重置State

    React?保留和重置State

    這篇文章主要為大家介紹了React?保留和重置State實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • React中使用TS完成父組件調(diào)用子組件的操作方法

    React中使用TS完成父組件調(diào)用子組件的操作方法

    由于在項(xiàng)目開發(fā)過程中,我們往往時(shí)需要調(diào)用子組件中的方法,這篇文章主要介紹了React中使用TS完成父組件調(diào)用子組件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Redis數(shù)據(jù)結(jié)構(gòu)面試高頻問題解析

    Redis數(shù)據(jù)結(jié)構(gòu)面試高頻問題解析

    這篇文章主要為大家介紹了Redis數(shù)據(jù)結(jié)構(gòu)高頻面試問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Antd react上傳圖片格式限制的實(shí)現(xiàn)代碼

    Antd react上傳圖片格式限制的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Antd react上傳圖片格式限制的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼圖文效果給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-12-12
  • 一文掌握React?組件樹遍歷技巧

    一文掌握React?組件樹遍歷技巧

    這篇文章主要為大家介紹了React?組件樹遍歷技巧的掌握,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • React組件內(nèi)事件傳參實(shí)現(xiàn)tab切換的示例代碼

    React組件內(nèi)事件傳參實(shí)現(xiàn)tab切換的示例代碼

    本篇文章主要介紹了React組件內(nèi)事件傳參實(shí)現(xiàn)tab切換的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • react用Redux中央倉(cāng)庫(kù)實(shí)現(xiàn)一個(gè)todolist

    react用Redux中央倉(cāng)庫(kù)實(shí)現(xiàn)一個(gè)todolist

    這篇文章主要為大家詳細(xì)介紹了react用Redux中央倉(cāng)庫(kù)實(shí)現(xiàn)一個(gè)todolist,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 詳解如何在React中有效地監(jiān)聽鍵盤事件

    詳解如何在React中有效地監(jiān)聽鍵盤事件

    React是一種流行的JavaScript庫(kù),用于構(gòu)建用戶界面,它提供了一種簡(jiǎn)單而靈活的方式來創(chuàng)建交互式的Web應(yīng)用程序,在React中,我們經(jīng)常需要監(jiān)聽用戶的鍵盤事件,以便根據(jù)用戶的輸入做出相應(yīng)的反應(yīng),本文將向您介紹如何在React中有效地監(jiān)聽鍵盤事件,并展示一些常見的應(yīng)用場(chǎng)景
    2023-11-11
  • ios原生和react-native各種交互的示例代碼

    ios原生和react-native各種交互的示例代碼

    本篇文章主要介紹了ios原生和react-native各種交互的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-08-08

最新評(píng)論