從零開始,一步一步搭建Typescript+React+Redux項目——集成Redux(四)

本文詳細介紹了如何從零開始搭建一個 Typescript + React 開發(fā)的腳手架,包含如何添加 Redux 以及 React Router 的環(huán)境。

本文代碼地址:ts-react-redux

建議將代碼拉下來之后,配合本文一起查看,效果更佳。

代碼下載命令:git clone https://github.com/vettel-qin/ts-react-redux.git

相關(guān)文章目錄

從零開始,一步一步搭建Typescript + React + Redux項目——創(chuàng)建項目結(jié)構(gòu)(一)

從零開始,一步一步搭建Typescript + React + Redux項目——開發(fā)環(huán)境配置(二)

從零開始,一步一步搭建 Typescript + React + Redux項目——集成React(三)

從零開始,一步一步搭建 Typescript + React + Redux項目——集成Redux(四)

從零開始,一步一步搭建 Typescript + React + Redux項目——項目打包(五)

從零開始,一步一步搭建 Typescript + React + Redux項目——團隊合作規(guī)范(六)

1、安裝redux和react-redux 這里我們不需要安裝@types/redux,因為Redux已經(jīng)自帶了聲明文件(.d.ts文件)

yarn add redux react-redux @types/react-redux -S

接下來就以一個經(jīng)典的TodoList來測試redux。

2、添加actions

(1)、在src下新建constants目錄并在此目錄下創(chuàng)建index.ts文件,然后在文件中添加所需的消息類型

constants/index.ts

??(2)、在src下新建actions目錄并在此目錄下創(chuàng)建index.ts文件,然后創(chuàng)建這些 actions 的函數(shù)

actions/index.ts

3、添加reducer

在src下新建reducers目錄并在此目錄下創(chuàng)建index.ts和todoList.ts文件

reducers/todoList.ts

? ? ???

reducers/index.ts

?4、添加store

store是保存數(shù)據(jù)的地方,整個應用只有一個store。Redux提供了createStore函數(shù)來生成store。

5、創(chuàng)建展示組件

(1)、在components下新建AddTodo目錄并在此目錄下創(chuàng)建AddTodo.tsx和index.ts文件?

AddTodo.tsx

index.ts

(2)、在components下新建TodoItem目錄并在此目錄下創(chuàng)建TodoItem.tsx和index.ts文件

TodoItem.tsx

index.ts

(3)、在components下新建TodoList目錄并在此目錄下創(chuàng)建TodoList.tsx和index.ts文件?

TodoList.tsx

index.ts

???6、修改home容器組件

關(guān)鍵點是react-redux的connect函數(shù),connect可以將我們的Home組件轉(zhuǎn)換成一個容器,通過以下兩個函數(shù):

a、mapStateToProps將當前store里的數(shù)據(jù)以我們的組件需要的形式傳遞到組件。

b、mapDispatchToProps利用dispatch函數(shù),創(chuàng)建回調(diào)props將actions送到store。

7、創(chuàng)建store

回到src/entries/index.tsx,要把所有的東西合到一起,我們需要創(chuàng)建一個帶初始狀態(tài)的store,并用我們所有的reducers來設置它。

并且使用 react-redux 的 Provider 將 props 和 容器連接起來

??8、redux中間件之redux-thunk

redux-thunk是dispatch到達reducer之前,進行一些額外的操作,如日志記錄、創(chuàng)建崩潰報告、異步接口等

安裝redux-thunk? yarn add redux-thunk -D

在store目錄下index.ts,寫入如下框內(nèi)代碼:


文章及代碼中如有問題,歡迎指正,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容