假设如果我使用 调度一个动作dispatch()
,我知道它reducer()
被称为 which has an action object and current state as parameters
。我想知道什么叫减速器功能?在 reducer 函数之前和 dispatch 函数之后调用了哪些函数?在reducer函数返回新状态之后,之后调用了哪些函数?这个新状态去哪儿了?在 reducer 函数返回新状态后是否还会返回一些usestate()
东西?useselector()
1 回答
我想知道什么叫减速器功能?在 reducer 函数之前和 dispatch 函数之后调用了哪些函数
dispatch() 确实“调用”了每个减速器。它使用一个事件系统,所有的 reducer 都在监听这个事件(这一切都在幕后)。
尽管如此,您仍然可以编写一段代码,将其插入到调度调用和reducers 捕获动作之间。
它被称为中间件。
中间件可以拦截由 dispatch 触发的任何动作,它也可以访问 store。
在中间件结束时,您只需使用回调来告诉流程继续。您需要将您的操作传递给它,以便您的减速器最终可以被调用并接收操作。
这是记录任何 dispatch() 发送的任何操作的中间件示例
const logger = store => next => action => {
console.log('dispatching', action)
let result = next(action)
console.log('next state', store.getState())
return result
}
要使其工作,您需要将中间件传递给您的 redux 配置,以便可以调用它们。
在reducer函数返回新状态之后,之后调用了哪些函数,这个新状态去哪里了?
如果您查看您的 redux 配置,您会在某个地方看到您组合了所有减速器(通常称为根减速器)。
const combinedReducers = combineReducers({ reducerA, reducerB })
const store = createStore(combinedReducers )
Redux 使用这种 reducer 组合来填充 store,所以无论什么时候 reducer 返回它的结果,它都可以保存在“store”中
在 reducer 函数返回新状态后,usestate() 和 useselector() 是否也会返回一些东西?
useSelector()
是一个可以在 store 中读取的 hooks。(Store 包含你的 reducer 的最新结果,并且每次在 store 中有修改时都会更新)
useState()
与redux无关。它与反应有关。使用 useState,您可以在组件的本地状态中进行读写。
它返回一个你的状态和这个状态的设置器。
const {myPieceOfState, setMyPieceOfState} = useState({ something :'a default value for myPieceOfState'})