小编Joh*_*ith的帖子

Typescript - 向函数的参数添加一个参数

type SomeFunc = (a:string, b:number, c:someCustomType) => number;
Run Code Online (Sandbox Code Playgroud)

我想创建一种与上面的类型类似的类型,只是最后添加了一个参数。比方说,d:number;

type SomeFuncAltered = (a:string, b:number, c:someCustomType, d:number) => number;
Run Code Online (Sandbox Code Playgroud)

不过,我不想手动制作整个类型,我很确定Parameters<func>这里可以使用一个聪明的技巧。

typescript

15
推荐指数
2
解决办法
8166
查看次数

Visual Studio代码-Python调试-执行时进入外部函数的代码

在Python项目中,如何告诉内置VSCode调试器在执行时进入其他库的函数代码?

我知道在标准库中实现的功能可以通过添加

"debugOptions": ["DebugStdLib"]
Run Code Online (Sandbox Code Playgroud)

到此处指定的launch.json中的配置,但是似乎无法强制调试器进入非标准模块的代码,例如您自己编写并导入到当前文件中的模块。

python debugging visual-studio-code

10
推荐指数
4
解决办法
1729
查看次数

带有功能组件的 WebSockets

我在 React 应用程序中使用 websockets。应用程序应该仅由功能组件组成。

想象一下,该应用程序由两个“选项卡”组成:一个不相关,另一个是使用 websockets 的聊天。鉴于此,我们希望在用户进入聊天选项卡后建立一个 websocket 连接。

组件应该如何处理 websocket 对象?由于我们希望在用户切换回另一个选项卡 ( WebSocket.close())后进行清理,因此听起来我们应该在这里使用效果挂钩。

const Chat = () => {
    const [messages, setMessages] = useState([]);
    useEffect(() => {
        const webSocket = new WebSocket("ws://url");
        webSocket.onmessage = (message) => {
            setMessages(prev => [...prev, message.data]);
        };
        return () => webSocket.close();
    }, []);
    return <p>{messages.join(" ")}</p>;
};
Run Code Online (Sandbox Code Playgroud)

作品!但是现在,想象一下我们想要webSocket在useEffect范围之外的某个地方引用变量——比如说,我们想要在用户点击一个按钮后向服务器发送一些东西。

现在,应该如何实施?我目前的想法(虽然我觉得有缺陷)是:

const Chat = () => {
    const [messages, setMessages] = useState([]);
    const [webSocket] = useState(new WebSocket("ws://url"));
    useEffect(() => {
        webSocket.onmessage …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks

8
推荐指数
2
解决办法
7548
查看次数

craco 的故事书 - 调用不同版本的反应脚本

Storybook 当前调用react-scripts. 但是,我已经用 .CRA 配置覆盖了某些部分craco。这意味着我的应用程序是通过craco ...,而不是 调用的react-scripts ...。

有没有一个干净的解决方案来调用 Storybook craco?

create-react-app storybook craco

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

从 Redux Toolkit 的 createSlice 获取操作类型

我正在createSlice与 一起使用useReducer。

我希望能正确输入调度,即React.Dispatch<ReducerActions>。

如何从中提取操作类型createSlice?

以下内容不起作用,它解决了AnyAction...我想说这是可以理解的,因为所有操作都会通过所有减速器。

Dispatch<Parameters<typeof slice["reducer"]>[1]>
Run Code Online (Sandbox Code Playgroud)

typescript redux-toolkit

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

使用 useRef 反应 createPortal 不起作用

  const ref = useRef(null);

  return (
    <>
      {ref.current !== null &&
        createPortal(<span>Hello!</span>, ref.current as any)}
      <div ref={ref}></div>
    </>
  );
Run Code Online (Sandbox Code Playgroud)

据我了解门户网站, aspan应该附加到div,但事实并非如此。

为什么会这样?

reactjs react-hooks

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

可选的对等依赖

我正在开发一个模块 A。用户可以选择将一个 Winston 记录器注入我的模块,因此winston是它的对等依赖项。

每当我将模块 A 安装在我不想记录内容的另一个模块中(因此我不包括 Winston)并尝试使用tsc它时,TS 大喊

Cannot find module 'winston' or its corresponding type declarations.
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

npm typescript

5
推荐指数
2
解决办法
613
查看次数

JetBrains IDE - 跳出括号/跳到表达式末尾的快捷方式

考虑这段代码,|光标在哪里

expect("Som|eString")
Run Code Online (Sandbox Code Playgroud)

我想知道是否有键盘快捷键可以跳转到这里:

expect("SomeString")|
Run Code Online (Sandbox Code Playgroud)

最好加一个点,如下所示:

expect("SomeString").|
Run Code Online (Sandbox Code Playgroud)

换句话说,我觉得跳转到表达式/语句末尾以继续输入它的快捷方式(例如在函数链中完成输入一个函数的参数之后)将非常有用,而且肯定有一个,即使我在设置中找不到它。

jetbrains-ide intellij-idea webstorm

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

MaterialUI for React with Styled-Components

我想设计PaperMaterialUI 的样式Dialog

const StyledDialog = styled(Dialog)`
  & .MuiPaper-root {
    width: 600px;
  }
`;
Run Code Online (Sandbox Code Playgroud)

但是,这意味着嵌套在具有MuiPaper-root该类的 Dialog 内的所有元素(例如,其他 Papers)都将继承它。

有什么方法可以将此样式范围限定为第一个对话框使用的纸张?

reactjs material-ui styled-components

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

通过 craco 将 svgr 添加到 create-react-app

我想将svgr 的 webpack 插件与 create-react-app 一起使用,以将 SVG 与 MaterialUI 的 SvgIcon一起使用。我正在使用craco将 svgr 添加到 Webpack 的配置中。

目前,每当应该渲染 SVG 时,都会抛出以下错误:

Failed to execute 'createElement' on 'Document': The tag name provided ('static/media/googlelogo.03ad8507.svg') is not a valid name.
Run Code Online (Sandbox Code Playgroud)

我的 craco.config.js:

Failed to execute 'createElement' on 'Document': The tag name provided ('static/media/googlelogo.03ad8507.svg') is not a valid name.
Run Code Online (Sandbox Code Playgroud)

如何正确嵌入 SVG?

webpack create-react-app craco

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