小编Ron*_*nny的帖子

如何手动将操作分派到使用 configureStore 创建的商店?

我有一个项目,其中一半是用类制作的,另一半是用钩子和 Redux 制作的。为此,我使用 Redux Toolkit 创建了一个商店,并使用该组件configureStore()提供它。Provider以非常简单的方式,商店的设置如下:

const userSlice = createSlice({
    name: 'user',
    initialState: {
        user: {}
    },
    reducers: {
        validate: (state, action) => state.user = action.payload
    }
})

const store configureStore({
    reducer: {
        user: userSlice.reducer
    }
})
Run Code Online (Sandbox Code Playgroud)

有两个组件 - 一个是新的功能组件,它使用钩子useSelector(),另一个是旧的组件,它是基于类的,但需要使用此 sasme 存储来分派操作。为此,我导入商店并启动

store.dispatch({type: 'user/validate', payload: newUser});
Run Code Online (Sandbox Code Playgroud)

来自类组件。我没有收到任何错误,但什么也没有发生。

我跟踪了 DevTools 的 Redux 插件的输入,我可以看到状态没有改变,所以我认为我的手动调用在dispatch某种程度上是错误的。

我期望发生的是状态更新,这将触发使用的组件的重新渲染useSelector

reactjs redux react-redux redux-toolkit

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

Cypress 和 cy 在commands.js 中未定义,但一切正常

当在 中键入自定义命令时commands.js,WebStorm 的 linter 表示 和Cypress均未cy定义,并且不提供任何 IntelliSense。两者都在任何文件中完美定义integration

命令.js

Cypress.Commands.add('command', () => {
  cy.get('div');
});

// ESLint: 'Cypress' is not defined.(no-undef)
// ESLint: 'cy' is not defined.(no-undef)
Run Code Online (Sandbox Code Playgroud)

索引.js

import './commands.js'
Run Code Online (Sandbox Code Playgroud)

VSCode 中不会出现此错误。相反, 和Cypresscy被定义为any

然而,不管这个错误如何,测试都可以正常工作。

我该怎么做才能让 linter 在自己的文件中识别 Cypress?

javascript webstorm eslint cypress

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

R:如何在n-choose-k中计算大数?

对于类赋值,我需要创建一个计算n选择k的函数.我做到了这一点,它适用于小数字(例如6选2),但我应该让它与200选择50,它自然不会.答案太大,R输出NaN或Inf,说:

> q5(200, 50)
[1] "NaN"
Warning message:
In factorial(n) : value out of range in 'gammafn'
Run Code Online (Sandbox Code Playgroud)

我尝试使用日志和指数,但它没有削减它.

q5 <- function (n, k) {
  answer <- log(exp( factorial(n) / ( (factorial(k)) * (factorial(n - k)) )))
  paste0(answer)
}
Run Code Online (Sandbox Code Playgroud)

r factorial exponent

4
推荐指数
1
解决办法
2143
查看次数

使用 ggplot 创建多个堆叠的小提琴图

我有一个在不同景观上运行的模型,一次同时运行,一次单独运行。我想在小提琴图中绘制结果,但我希望在同一个图中并排运行,并且每个景观都有自己的小提琴(所以2 堆 4 把小提琴)。示例数据:

df1 <- data.frame('means' = 1:6, 'landscape' = rep(c('forest', 'desert', 3)))
df2 <- data.frame('means' = rep(c(1,2), 3), 'landscape' = rep(c('forest', 'desert', 3)))
Run Code Online (Sandbox Code Playgroud)

我希望最终产品看起来如何(MS Paint 中的插图,我是一个糟糕的艺术家): 在此处输入图片说明

绿色代表森林,金色代表沙漠。

r ggplot2 violin-plot

4
推荐指数
1
解决办法
615
查看次数

为什么我必须将 TS 文件导入为 JS 文件?

我正在使用 WebdriverIO 帮助进行一个测试项目。我们在 TS serting 方面遇到了巨大的困难,因为 TS 转译器似乎可以正确解析 TS 模块,但解析在运行时失败。

例如,如果我有一个模块:

// config/config.ts
export const config = {};
Run Code Online (Sandbox Code Playgroud)

然后是一个文件:

// someTest.ts
import { config } from './config/config`;
Run Code Online (Sandbox Code Playgroud)

然后 TS 将正确显示 的类型config。但是,在运行该套件时,我会收到以下消息:

[0-2] 2023-04-18T09:07:54.651Z ERROR @wdio/runner: Error: Cannot find module '/Users/ronnyefronny/projects/wdio-demo/config/config' imported from /Users/ronnyefronny/projects/wdio-demo/test/step-definitions/VoiceflowStepDefs.ts
Run Code Online (Sandbox Code Playgroud)

我的tsconfig.json是:

// config/config.ts
export const config = {};
Run Code Online (Sandbox Code Playgroud)

WDIO 配置的其余部分是按照他们的文档推荐的,但仍然什么也没有。

让我困惑的是,在他们自己的示例样板存储库中,WDIO 将 TS 模块导入为 JS,这让我困惑不已。我在后端和前端项目上使用 TS 已经有几年了,从来不需要导入 TS 模块作为其转译的 JS 模块。

也就是说,而不是

import { config } from './config/config';
Run Code Online (Sandbox Code Playgroud)

会做 …

typescript webdriver-io

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