redux常用的幾個函式

2021-09-19 11:58:46 字數 2976 閱讀 5868

1. createstore(reducer, [initstate, enhancer])

import thunk from 'redux-thunk'

import createlogger from 'redux-logger'

import api from '../middleware/api'

import rootreducer from '../reducers'

import devtools from '../containers/devtools'

export default function configurestore(preloadedstate)

2. store

store是用來維持應用所有state樹的乙個物件。改變state的唯一方法是store dispatch乙個action。

store不是類,而只是乙個有幾個方法的物件,可以採用createstore進行建立。

// 渲染和訂閱渲染

function render()

store.subscribe(render)

3. combinereducers(reducers)

combinereducers輔助函式的作用是,把乙個由多個不同 reducer 函式作為 value 的 object,合併成乙個最終的 reducer 函式,然後就可以對這個 reducer 呼叫 createstore。

多個子reducer函式合併後,相當於整體函式會為state特定字段進行對映產生特定的reducer函式。 如頁面中的例子;todos和counter只會處理對應字段過來的action。

輸入乙個middlewares陣列,返回乙個函式,函式以createstore為引數:

return (createstore) => (reducer, preloadedstate, enhancer) =>

chain = middlewares.map(middleware => middleware(middlewareapi))

dispatch = compose(...chain)(store.dispatch)

return

}}使用示例:

import todos from './reducers'

function logger()

}let store = createstorewithmiddleware(todos, [ 'use redux' ])

每個 middleware 接受 store

的 dispatch

和 getstate

函式作為命名引數,並返回乙個函式。該函式會被傳入 被稱為 next 的下乙個 middleware 的 dispatch 方法,並返回乙個接收 action 的新函式,這個函式可以直接呼叫next(action),或者在其他需要的時刻呼叫,甚至根本不去呼叫它。呼叫鏈中最後乙個 middleware 會接受真實的 store 的 dispatch

方法作為 next 引數,並藉此結束呼叫鏈。所以,middleware 的函式簽名是 () => next => action。

5. bindactioncreators(actioncreators,dispatch)

經過bindactioncreators處理的actions,直接呼叫函式就相當於進行了dispatch,因而實現了不呼叫dispatch即可觸發state的改變。

使用場景: 當你需要把 action creator 往下傳到乙個元件上,卻不想讓這個元件覺察到 redux 的存在,而且不希望把 redux store 或 dispatch

傳給它。

import from '../actions'

...render() = this.props

let boundactioncreators = bindactioncreators(, dispatch);

return ()}}

// picker.js

export default class picker extends component = this.props

console.log(this.props)

return (

selectreddit(e.target.value)}

value=>)}

)}}

可以參考文章。

6. compose(...functions)

從右到左來組合多個函式。

這是函式式程式設計中的方法,為了方便,被放到了 redux 裡。 當需要把多個 store 增強器 依次執行的時候,需要用到它。compose(funca, funcb, funcc)形象為compose(funca(funcb(funcc())))

7. 和connect([mapstatetoprops], [mapdispatchtoprops],[mergeprops], [options])

使元件層級中的 connect()方法都能夠獲得 redux store。正常情況下,你的根元件應該巢狀在 中才能使用 connect()方法。

reactdom.render(

, rootel

);

connect: 連線 react 元件與 redux store。

// mapstatetoprops: 哪些 redux 全域性的 state 是我們元件想要通過 props 獲取的?

function mapstatetoprops(state)

}

// mapdispatchtoprops: 哪些 action 建立函式是我們想要通過 props 獲取的?

function mapdispatchtoprops(dispatch)

}

mergeprops和options: 再議

常用的幾個函式

隨機數的產生 大多數情況下使用函式 srand 和 rand 即可搞定,這兩個函式包含於標頭檔案 中。為了取得可變的隨機碼,必須在使用rand 前呼叫srand 函式來取得隨機種子,這樣編譯後的程式才在每次執行時可以產生不同的隨機數。例子 srand unsigned time null 一般取系統...

幾個常用的PHP函式

最近在看 發現以下是幾個比較實用的函式。1,取客戶端ip 檢視複製列印?這裡,如果使用多級 的使用者,真實ip是取不到的。2,字串擷取,支援中文 檢視複製列印?function getstrtruncate string length 80,etc str c return str etc else...

XPATH的幾個常用函式

1.contains div contains id,in 表示選擇id中包含有 in 的div節點 2.text 由於乙個節點的文字值不屬於屬性,比如 baidu 所以,用text 函式來匹配節點 a text baidu 3.last 前面已介紹 4.starts with div starts...