摘要:中定義來各個(gè)要做的事情。代碼定義把封裝成一個(gè)方法,這樣用的時(shí)候不用每次定義,避免出錯(cuò)入口文件封裝成方法,方便下面的的訂閱調(diào)用每當(dāng)時(shí),訂閱的函數(shù)就會(huì)執(zhí)行現(xiàn)在有機(jī)關(guān)槍把。通過的來觸發(fā),中訂閱的事件就會(huì)執(zhí)行。觸發(fā),獲取的值。
環(huán)境準(zhǔn)備
為了方便,這里使用create-react-app搭建react環(huán)境
create-react-app mydemo彈出配置
如果需要自定義react的配置,需要運(yùn)行下面的命令把配置文件彈出來。
npm run eject安裝redux
npm i redux --save簡(jiǎn)單理解
redux簡(jiǎn)單用法就是通過它的store來訂閱和發(fā)布信息。
通過subscribe來訂閱action,通過dispatch來觸發(fā)action。reducer中定義來各個(gè)action要做的事情。
const Add = "addGirl", Remove = "removeGirl"; export function reducer(state = 0, action) { switch (action.type) { case Add: return state + 1; case Remove: return state - 1; default: return 10; } } //action creator,把a(bǔ)ction封裝成一個(gè)方法,這樣用的時(shí)候不用每次定義,避免出錯(cuò) export function addCreator() { return { type: Add }; } export function removeCreator() { return { type: Remove }; } export function addAsync() { return (dispatch, getState) => { setTimeout(function () { dispatch(addCreator()); }, 1000); } }入口文件index.js
import React from "react"; import ReactDOM from "react-dom"; import "./index.css"; import App from "./App"; import registerServiceWorker from "./registerServiceWorker"; import { createStore } from "redux"; import thunk from "redux-thunk"; import { reducer,addCreator,removeCreaator } from "./index.redux"; import { Provider } from "react-redux" const store = createStore(reducer); function render() { ReactDOM.render(App.js, document.getElementById("root") ); } //封裝成方法,方便下面的store的訂閱調(diào)用 render(); //每當(dāng)dispatch時(shí),訂閱的函數(shù)就會(huì)執(zhí)行 store.subscribe(render); registerServiceWorker();
import React, { Component } from "react"; import "./App.css"; class App extends Component { render() { var store=this.props.store; var num=store.getState(); return (); } } export default App;現(xiàn)在有機(jī)關(guān)槍{this.props.num}把。
通過store的dispatch來觸發(fā)action,index.js中訂閱的事件就會(huì)執(zhí)行。
redux的異步執(zhí)行redux中如果需要執(zhí)行異步操作,需要安裝react-thunk插件
npm i react-thunk --save
同時(shí)需要redux插件的applyMiddleware
關(guān)鍵代碼設(shè)置其實(shí)很簡(jiǎn)單,創(chuàng)建store時(shí),把thunk傳遞給它就行了。
import thunk from "redux-thunk"; const store = createStore(reducer, applyMiddleware(thunk));
在app.js中增加一個(gè)觸發(fā)異步操作的按鈕,reducer中已經(jīng)定義了一個(gè)異步的方法。
export function addAsync() { return (dispatch, getState) => { setTimeout(function () { dispatch(addCreator()); }, 1000); } }
異步調(diào)用方法會(huì)返回一個(gè)有兩個(gè)參數(shù)的方法,兩個(gè)參數(shù)都是函數(shù),第一個(gè)是dispatch函數(shù),第二個(gè)是getState函數(shù)。
dispatch觸發(fā)action,getState獲取state的值。
在app.js中增加代碼
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/94390.html
摘要:在函數(shù)式編程中數(shù)據(jù)在由純函數(shù)組成的管道中傳遞。函數(shù)式編程中函子是實(shí)現(xiàn)了函數(shù)的容器下文中將函子視為范疇,模型可表示如下但是在函數(shù)式編程中要避免使用這種面向?qū)ο蟮木幊谭绞饺《畬?duì)外暴露了一個(gè)的接口也稱為。 showImg(https://segmentfault.com/img/remote/1460000018101204); 該系列會(huì)有 3 篇文章,分別介紹什么是函數(shù)式編程、剖析函數(shù)...
摘要:描述這個(gè)插件可以讓我們的代碼更加的簡(jiǎn)潔和美觀。安裝使用提供了兩個(gè)重要的接口使用了這個(gè)插件,的和就可以忘記來,它們就用不著了?,F(xiàn)在有美女個(gè)。 可先查看我的redux簡(jiǎn)單入門 react-redux簡(jiǎn)介 react-redux是使用redux開發(fā)react時(shí)使用的一個(gè)插件,另外插一句,redux不是react的產(chǎn)品,vue和angular中也可以使用redux;下面簡(jiǎn)單講解,如何使用rea...
摘要:概述之前寫的所有關(guān)于的文章都是純粹的,是和框架無關(guān)環(huán)境無關(guān)的,所以我沒有將和一起講,為的是吧和分開,作為獨(dú)立的個(gè)體來分析,提現(xiàn)的是一種思想,而不是一個(gè)思維定式。而現(xiàn)在我們可以嘗試在中來使用了。 0x000 概述 之前寫的所有關(guān)于redux的文章都是純粹的redux,是和框架無關(guān)、環(huán)境無關(guān)的redux,所以我沒有將redux和react一起講,為的是吧redux和react分開,作為獨(dú)立...
摘要:我的入門到放棄之路最近看到很多相關(guān)的問題跟討論,越來越多的小伙伴喜歡這個(gè)框架了,同時(shí)也在看到了有些入門的小伙伴遇到了各種各樣的問題,本人也是框架使用都一枚,公司是騰訊阿里平安三巨頭合資的一家公司,分別上海深圳杭州北京廣州等多個(gè)分部,前端人員 showImg(https://segmentfault.com/img/bVbhonB?w=1278&h=722); 我的react入門到放棄之...
閱讀 3175·2023-04-26 00:49
閱讀 3817·2021-09-29 09:45
閱讀 1145·2019-08-29 18:47
閱讀 2804·2019-08-29 18:37
閱讀 2800·2019-08-29 16:37
閱讀 3357·2019-08-29 13:24
閱讀 1838·2019-08-27 10:56
閱讀 2416·2019-08-26 11:42