我的reducers
. 但是,当我在浏览器中进行调试时,我想检查是否正确调用了我的操作以及是否相应地修改了状态。
我正在寻找类似的东西:
window._redux.store
...在浏览器中,这样我就可以在控制台上输入它并检查事情的进展情况。
我怎样才能做到这一点?
我的reducers
. 但是,当我在浏览器中进行调试时,我想检查是否正确调用了我的操作以及是否相应地修改了状态。
我正在寻找类似的东西:
window._redux.store
...在浏览器中,这样我就可以在控制台上输入它并检查事情的进展情况。
我怎样才能做到这一点?
自从我最初的回答以来,react devtools 已经发生了变化。components
chrome 的 devtools 中的新选项卡仍然有数据,但您可能需要多搜索一点。
Components
选项卡store
以显示store
(对我来说是第 4 级)$r.store.getState()
如果您正在运行 React 开发人员工具$r.store.getState();
,则无需更改代码库即可使用。
注意:你必须先在你的开发者工具窗口中打开 react devtool 才能使这个工作,否则你会得到一个$r is not defined
错误
$r.store.getState();
或$r.store.dispatch({type:"MY_ACTION"})
let store = createStore(yourApp);
window.store = store;
现在您可以从控制台中的 window.store 访问商店,如下所示:
window.store.dispatch({type:"MY_ACTION"})
推荐的解决方案对我不起作用。
正确的命令是:
$r.props.store.getState()
您可以使用Redux Book 中描述的日志中间件:
/**
* Logs all actions and states after they are dispatched.
*/
const logger = store => next => action => {
console.group(action.type)
console.info('dispatching', action)
let result = next(action)
console.log('next state', store.getState())
console.groupEnd(action.type)
return result
}
let createStoreWithMiddleware = applyMiddleware(logger)(createStore)
let yourApp = combineReducers(reducers)
let store = createStoreWithMiddleware(yourApp)
或者,您可以将日志记录更改为仅附加到全局数组(您的window._redux
),并且您可以在需要有关特定状态的信息时查看该数组。
如果您使用Next JS,您可以通过以下方式访问商店:window.__NEXT_REDUX_STORE__.getState()
您也可以分派操作,只需查看您拥有的选项window.__NEXT_REDUX_STORE__