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...