终极版中间件的认识指导
const store = createStore( rootReducer,
initialState,
compose(
applyMiddleware(thunk, api, wsMiddleware, createLogger()),
typeof window === 'object' && typeof window.devToolsExtension !==
'undefined'
? window.devToolsExtension()
: DevTools.instrument(),
),
);
所以上面的是你怎么通常会创建一个存储,然后你有你的中间件,它开始像这样:终极版中间件的认识指导
export default store => next => (action) => {
我看过了,从终极版中间件部分。 org,但任何人都能更好地向我解释这是怎么回事?
那么中间件是否正在接收商店?并从商店中调用下一个函数,最后使用作为动作给出的参数(在这种情况下)。 ?
回答:
的终极版中间件管道可以细分这样的...
store => {...}
商店API是提供给管道的第一个参数。这允许中间件在流水线中的任何点获得当前状态和/或将新动作分派到商店中。
注:它具有许多与从createStore
函数返回的商店相同的特性,但它不尽相同。只有dispatch
和getState
功能可用。
next => {...}
的next
参数是对链中的下一个中间件参考。如果没有更多的中间件要去,那么商店会处理这个动作(即将它传递给reducer)。
如果next
未被调用,则该操作不会使其进入reducer。这可以有效地抑制某些不是有效操作的东西,比如函数或承诺,因为如果Redux尝试处理它,则会引发错误。
action => {...}
的action
说法是,被分派到商店的东西。
{...}
在这里你将测试action
,看看是否有你想用它和你是否将它传递到next
处理程序做一些特别的东西。
一个例子
在这个例子中,我们将创建一个简单的thunk
middleware,解释它如何使用管道的各个部分。
export default store => next => action => { // if the action is a function, treat it as a thunk
if (typeof action === 'function') {
// give the store's dispatch and getState function to the thunk
// we want any actions dispatched by the thunk to go through the
// whole pipeline, so we use the store API dispatch instead of next
return action(store.dispatch, store.getState)
} else {
// we're not handling it, so let the next handler have a go
return next(action)
}
}
回答:
符合Redux中间件API的功能。每个中间件都接收Store的dispatch和getState函数作为命名参数,并返回一个函数。该函数将被赋予下一个中间件的调度方法,并且预计会返回一个调用next(action)的函数,该函数可能具有不同的参数,或者在不同的时间,或者根本不调用它。链中的最后一个中间件将接收真实商店的调度方法作为下一个参数,从而结束链。所以,中间件签名是({getState,dispatch})=> next =>动作。
答案在applymiddleware文档中找到。 https://redux.js.org/docs/api/applyMiddleware.html
以上是 终极版中间件的认识指导 的全部内容, 来源链接: utcz.com/qa/262084.html