小编dar*_*arx的帖子

使用 Jest 模拟 React 自定义钩子

在对 React 组件进行单元测试时,我需要模拟我的自定义钩子。我读过一些关于这个简单任务的教程和 stackoverflow 答案,但没有运气正确地实现它。

我对单一测试最简单的设置如下:

// TestComponent.js

import React from "react";
import useTest from "./useTest";

const TestComponent = () => {
  const { state } = useTest("initial_value");

  return <div>{state}</div>;
};

export default TestComponent;
Run Code Online (Sandbox Code Playgroud)
// useTest.jsx - simple custom hook

import React, { useState } from "react";

const useTest = (initialState) => {
  const [state] = useState(initialState);
  return { state };
};

export default useTest;

Run Code Online (Sandbox Code Playgroud)
// TestComponent.test.jsx - my test case

import React from "react";
import { render } from …
Run Code Online (Sandbox Code Playgroud)

mocking reactjs jestjs react-hooks

25
推荐指数
1
解决办法
3万
查看次数

FlowLayoutPanel中的奇怪空格

我在flowlayoutpanel上有很多按钮,然后有文本标签来打破流程.标签和标签本身之前的最后一个按钮SetFlowBreak.一切都很好,但我不明白,为什么文本标签下面有这么多空间?如果窗体的大小调整得如此之窄,以至于只有一列按钮,那么不需要的空间就会消失.有人可以解释如何删除该空间?

码:

public Form1()
{
    InitializeComponent();

    for (int i = 1; i <= 100; i++)
    {
        Button button = new Button();
        button.Text = i.ToString();
        button.Width = 150;
        button.Height = 50;
        button.Margin = new Padding(5);
        flowLayoutPanel1.Controls.Add(button);

        if (i % 10 == 0)
        {
            flowLayoutPanel1.SetFlowBreak(button, true);

            Label label = new Label();
            label.Text = "Some random text";
            label.AutoSize = true;
            label.Margin = new Padding(5, 5, 0, 0);
            label.BackColor = ColorTranslator.FromHtml("#ccc");
            flowLayoutPanel1.Controls.Add(label);

            flowLayoutPanel1.SetFlowBreak(label, true);

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和几个图像来表明我的意思:

Image1:标签下的奇怪空间 在此输入图像描述

Image2:调整表单大小时,Label下没有空格(这就是我喜欢这个的方式) 在此输入图像描述

c# flowlayoutpanel

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

C# 中媒体键的全局 keyhook

通过以下RegisterHotKey函数,我可以全局挂钩正常的键修饰符组合:

[DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
Run Code Online (Sandbox Code Playgroud)

关于它的精彩文章和完整的源代码在这里:http://www.liensberger.it/web/blog/ ?p=207

但问题是,如何挂钩媒体键,即键盘和电脑遥控器中的播放/暂停/下一个/上一个键?我用谷歌搜索了又搜索,但没有任何运气。

c# winforms keyhook media-keys

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

ApolloClient 类型错误 ApolloLink

我正在尝试使用 TypeScript 创建 ApolloClient,但有一些我无法解决的类型错误。谁能指出我正确的方向该怎么做?

以下是用于创建客户端的示例代码(可与 JavaScript 一起使用):

import {
  ApolloClient,
  ApolloProvider,
  InMemoryCache,
  split
} from '@apollo/client';

import { setContext } from 'apollo-link-context';
import { createHttpLink } from 'apollo-link-http';
import { getMainDefinition } from '@apollo/client/utilities';
import { WebSocketLink } from '@apollo/link-ws';

const authLink = setContext((_, { headers }) => {
  const token = localStorage.getItem('consequat-token');
  return {
    headers: {
      ...headers,
      authorization: token ? `bearer ${token}` : null
    }
  };
});

const httpLink = createHttpLink({ uri: 'http://localhost:4000' });

const wsLink = new WebSocketLink({ …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs apollo-client

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

GiveFeedback 事件未触发

GiveFeedback我的ListView控件无法触发事件。下面的代码仅用于此测试,它正在更新事件中的文本标签,只是为了查看触发了哪些事件以及何时触发。label1拖动项目和label3项目下降时更新。但为什么label2永远不会更新?我错过了什么?

public Form1()
{
    InitializeComponent();

    listView1.ItemDrag += new ItemDragEventHandler(listView1_ItemDrag);
    listView1.DragDrop += new DragEventHandler(listView1_DragDrop);
    listView1.DragEnter += new DragEventHandler(listView1_DragEnter);
    listView1.DragOver += new DragEventHandler(listView1_DragOver);
    listView1.GiveFeedback += new GiveFeedbackEventHandler(listView1_GiveFeedback);
}

private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
    DoDragDrop(e.Item, DragDropEffects.All);
}

private void listView1_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Move;
}

private void listView1_DragOver(object sender, DragEventArgs e)
{
    label1.Text = "DragOver " + DateTime.Now.ToString();
}

private void listView1_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
    label2.Text = "GiveFeedback …
Run Code Online (Sandbox Code Playgroud)

c# events drag-and-drop winforms

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