如何解决react-redux 中的 dispatch 函数和 reducer 函数之后会发生什么?
假设如果我使用 dispatch()
分派一个动作,我知道 reducer()
被调用,它具有 an action object and current state as parameters
。我想知道什么调用了该减速器功能?哪些函数在 reducer 函数之前和 dispatch 函数之后被调用?在 reducer 函数返回新状态之后,之后调用哪些函数?这个新状态去哪里了?在reducer 函数返回新状态后,usestate()
和useselector()
是否也返回一些东西?
解决方法
我想知道什么调用了reducer函数? 哪些函数在reducer函数之前和dispatch函数之后被调用
dispatch() 确实“调用”了每个减速器。它使用一个事件系统,所有的 reducer 都在监听这个事件(这一切都在幕后)。
不过,您可以编写一段代码,将其插入到 dispatch 调用和 reducer 捕获操作之间。
它被称为中间件。
中间件可以拦截由调度触发的任何操作,也可以访问商店。
在中间件的末尾,您只需使用回调来告诉流程继续。 您需要将您的操作传递给它,以便您的减速器最终可以被调用并接收操作。
这是一个中间件示例,它记录任何 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 返回它的结果,它都可以保存在 'the store'
在reducer函数返回新状态后,usestate()和useselector()是否也返回一些东西?
useSelector()
是一个钩子,可以在 store 中读取。 (包含reducer 的最新结果的存储,并且在存储中每次有修改时更新)
useState()
与 redux 无关。它与 React 相关。使用 useState,您可以在组件的本地状态中读写。
它返回一个你的状态和一个状态的 setter。
const {myPieceOfState,setMyPieceOfState} = useState({ something :'a default value for myPieceOfState'})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。