Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调试时,我可以从浏览器控制台访问Redux存储吗?_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 调试时,我可以从浏览器控制台访问Redux存储吗?

Javascript 调试时,我可以从浏览器控制台访问Redux存储吗?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我对我的减速机进行了单元测试。但是,当我在浏览器中调试时,我想检查是否正确调用了我的操作,以及是否相应地修改了状态 我要找的东西是: window._redux.store 。。。在浏览器中,这样我就可以在控制台上键入,并检查情况 如何实现这一点?您可以使用日志中间件: 或者,您可以将日志记录更改为仅附加到全局数组(您的窗口。_redux),并在需要特定状态的信息时查看数组。让store=createStore(yourApp); window.store=商店 现在,您可以通过控制台中的wi

我对我的
减速机进行了单元测试。但是,当我在浏览器中调试时,我想检查是否正确调用了我的操作,以及是否相应地修改了状态

我要找的东西是:

window._redux.store
。。。在浏览器中,这样我就可以在控制台上键入,并检查情况


如何实现这一点?

您可以使用日志中间件:


或者,您可以将日志记录更改为仅附加到全局数组(您的
窗口。_redux
),并在需要特定状态的信息时查看数组。

让store=createStore(yourApp);
window.store=商店

现在,您可以通过控制台中的window.store访问存储,如下所示:

window.store.dispatch({type:“MY_ACTION”})

如何在任何网站上查看redux store,而无需更改代码 更新日期:2019年11月 自我最初的回答以来,react开发工具已经发生了变化。chrome开发工具中新的
components
选项卡仍然有数据,但您可能需要进行更多的搜索

  • 开放式镀铬工具
  • 选择react devtool的
    组件
    选项卡
  • 单击最上面的节点,在右侧列中查找要显示的
    store
  • 在树下重复第3步,直到找到
    存储
    (对我来说,这是第4级)
  • 现在,您可以使用
    $r.store.getState()
  • 原始答案 如果运行了react developer工具,则可以使用
    $r.store.getState()使用不更改代码库

    注意:您必须首先在“开发人员工具”窗口中打开react devtool才能执行此操作,否则将出现
    $r未定义的错误

  • 开放式开发工具
  • 单击“反应”选项卡
  • 确保选择了提供程序节点(或最顶层节点)
  • 然后键入
    $r.store.getState()
    $r.store.dispatch({type:“MY_ACTION”})
    到您的控制台中

  • 如果要查看用于调试的存储状态,可以执行以下操作:

    #import global from 'window-or-global'
    const store = createStore(reducer)
    const onStateChange = (function (global) {
      global._state = this.getState()
    }.bind(store, global))
    store.subscribe(onStateChange)
    onStateChange()
    console.info('Application state is available via global _state object.', '_state=', global._state)
    

    如果您正在使用,您可以通过以下方式访问存储:
    窗口。\uuuuu NEXT\u REDUX\u store\uuuuu.getState()


    您也可以调度操作,只需查看
    窗口中的选项。\uuuuu NEXT\u REDUX\u store\uuu
    使用react开发者工具:

    const store = [...__REACT_DEVTOOLS_GLOBAL_HOOK__.reactDevtoolsAgent.internalInstancesById.values()].find(e=>e.elementType.name==="Provider").pendingProps.store
    

    首先,您需要在
    窗口
    对象中定义存储(您可以将其放置在
    配置存储
    文件中):

    然后,您只需在控制台中写入以下内容:

    window.store.getState();
    

    跳转这有帮助。

    另一个答案建议将存储添加到窗口中,但如果您只想作为对象访问存储,可以在窗口中定义一个getter

    此代码需要添加到您已配置存储的位置-在我的应用程序中,此文件与调用
    的位置相同

    现在,您可以在控制台中键入
    reduxStore
    以获取对象,然后键入
    copy(reduxStore)
    将其复制到剪贴板

      Object.defineProperty(window, 'reduxStore', {
        get() {
          return store.getState();
        },
      });
    

    您可以将其包装在
    if(process.env.NODE_env==“development”)
    中,以便在生产中禁用它。

    推荐的解决方案对我不起作用

    正确的命令是:

    $r.props.store.getState()
    

    作为一个旁注,您可以考虑使用Auto来可视化您的操作和结果状态。谈到安全性,在生产生成模式中,是否可以从浏览器控制台读取存储?@ JRICHARDSZ,也可以访问状态:<代码>窗口> Stest.GETStEATE()/<代码>或更好,使用类似这样的库:从“./reducers/”导入还原器,然后您可以使用let store=createStoreWithMiddleware(还原器),因为“./reducers/”文件中通常会包含合并还原器。注意:要使其起作用,您需要将
    状态
    存储为根组件上的属性。如果您遵循并将
    作为顶级组件,这将很好地工作。只是被它咬了一口!请尝试
    $r.state.store.getState()
    看起来像
    $r
    指的是开发工具的
    组件部分中当前选定的组件。我似乎无法通过
    $r
    访问整个
    存储
    ,可能是因为我到处都在使用挂钩,但我可以看到我的组件可以看到的存储部分,这几乎是一样好的,有时更切题<代码>$r.hooks[0]。子目录[0]。子目录[0]。value.store.getState()
    适用于使用选择器的组件。。。Ob.,YMMV取决于您使用的钩子…我必须使用
    $r.props.store
    默认情况下,控制台中的store未定义。它是如何到达的?需要先在window对象中定义Store,然后才能使用它。@RafaelRozon是的,你是对的,我编辑了我的答案以显示它。gives
    Uncaught TypeError:无法读取未定义的属性“值”
    Error应该是对这些答案的注释
      Object.defineProperty(window, 'reduxStore', {
        get() {
          return store.getState();
        },
      });
    
    $r.props.store.getState()