小编Ian*_* Su的帖子

React Flux - 在调度中调度 - 如何避免?

我似乎遇到了一种情况,我无法避免在Flux中发送调度问题.

我已经阅读了一些关于这个问题的类似问题,但是除了setTimeout黑客之外,它们似乎都没有一个好的解决方案,我想避免.

我实际上使用alt.js而不是Flux,但我认为概念是相同的.

脚本

想象一下最初呈现登录表单的组件.当用户登录时,这会触发最终以身份验证信息(例如用户名)响应的XHR,然后根据身份验证信息获取一些安全数据并呈现它而不是登录表单.

我遇到的问题是当我尝试根据XHR响应触发一个动作来获取数据时,它仍然在发送LOGIN_RESPONSE动作,并触发了可怕的行为

Error: Invariant Violation: Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.
Run Code Online (Sandbox Code Playgroud)

我创建了这个jsfiddle来演示这个问题.

我有一个Wrapper组件Contents,根据用户是否设置,呈现登录按钮或子组件MyStore.

  1. 首先,登录按钮在Wrapper组件中呈现.
  2. 单击该按钮将调度该LOGIN操作.
  3. 延迟之后,将LOGIN_RESPONSE调度该操作(通过alt.js中异步机制).
  4. 此操作会触发MyStore更新用户名.
  5. Wrapper 组件观察存储更改并更新其状态.
  6. 这会导致Wrapper呈现Content组件而不是登录按钮.
  7. Contentmount上的组件尝试分派FETCH_DATA操作,但由于调度程序仍在调度,因此操作失败LOGIN_RESPONSE.(如果我将FETCH_DATA调度包装在setTimeout它的工作中,但感觉就像一个黑客).

这种情况的变化似乎是一种常见的情况.事实上,几乎所有相关问题都有类似的情况,但没有好的或具体的答案.

这个数据流有什么本质上的错误吗?做这样的事情的适当的Flux方式是什么?

javascript flux reactjs

8
推荐指数
1
解决办法
1629
查看次数

在单页Webapp中第二次初始化Okta登录小部件会引发异常

我们正在将Okta登录小部件集成到基于React的webapp中。

示例片段

var oktaSignIn = new OktaSignIn({baseUrl: baseUrl});
oktaSignIn.renderEl(...)
Run Code Online (Sandbox Code Playgroud)

首次渲染小部件时,对我们来说效果很好,但是在用户登录并再次注销后,Web应用程序将再次渲染登录组件,并会尝试renderEl再次执行以渲染小部件。这将引发以下异常:

Backbone.history has already been started
Run Code Online (Sandbox Code Playgroud)

我创建了这个jsfiddle来演示问题。它只是实例化登录小部件两次(等待后第二次)。您可以看到第二次调用导致引发异常。

https://jsfiddle.net/nudwcroo/6/

目前,我的解决方法是在登录组件时重新加载整个Web应用程序,但这对于单页面应用程序是不希望的。

这是一个已知的问题?有没有办法在单个javascript会话中两次初始化登录小部件?

javascript okta

6
推荐指数
1
解决办法
953
查看次数

在Java中区分ESTALE和ENOENT的最佳方法

我正在尝试在NFS文件系统上编写在Linux环境中运行的Java应用程序.

我注意到,当我调用时java.io.File.exists(),它会返回false ESTALE(Stale NFS文件句柄)和ENOENT(没有这样的文件或目录).对于我的应用程序,我需要能够区分这两者.

目前我正在考虑stat()使用JNA 实现调用,但这似乎有点矫枉过正,需要实现整个stat结构以及所有__xstat64看似平台依赖的东西.

是否有一种简单的方法可以简单地errno在Java调用之后获取底层函数File.exists()或者解决此问题的任何其他想法?

java nfs jna

5
推荐指数
1
解决办法
265
查看次数

是否有任何命令行工具可以解析coverage.xml并突出显示丢失的行?

我正在处理 python 项目并使用 pytest-cov 模块生成用于单元测试的coverage.xml。但是我没有任何好的工具来解析coverage.xml并突出显示遗漏的代码行。这似乎是一个常见的用例,但我无法通过谷歌找到任何东西。

有没有任何工具(最好是通过命令行,因为我主要通过 ssh 工作)可以做到这一点?

如果我找不到任何东西,我正在考虑编写自己的 pygments 过滤器。

python code-coverage command-line-interface pytest

5
推荐指数
1
解决办法
1680
查看次数