在对 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) 我在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)
和几个图像来表明我的意思:
通过以下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
但问题是,如何挂钩媒体键,即键盘和电脑遥控器中的播放/暂停/下一个/上一个键?我用谷歌搜索了又搜索,但没有任何运气。
我正在尝试使用 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) 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# ×3
reactjs ×2
winforms ×2
events ×1
jestjs ×1
keyhook ×1
media-keys ×1
mocking ×1
react-hooks ×1
typescript ×1