小编MiB*_*Bol的帖子

React Hooks useState - 推荐什么,每个组件只有一个状态或多个状态?

使用 Hooks/Functional 组件在 React 中优化和使代码更具可读性的更好方法是什么?每个组件有一个 setState 钩子还是多个?

为了扩展我的问题,请考虑以下内容:

使用钩子,我们可以使用多个状态,以某种方式更方便地拆分特定用途的状态(例如,一种状态用于用户数据,另一种用于保存加载标志,另一种用于为 API 检索的数据等) . 在我的第一步中,我确信最好的方法是每个我想要管理的数据都有多个状态……但是,一段时间后,当我想要时,我开始遇到多个状态之间的同步问题更新/读取效果函数中的多个状态(useEffect)。

所以,我开始相信使用 Hooks 管理状态的最佳方法它只有一个使用对象的状态并从这里管理我的所有数据......就像类组件......

const [data, setData] = useState({
    retrieveData: false,
    apiData: [],
    userInfo: [],
    showModal: false
})

// To update:
setData(oldData => {
    return { ...oldData, showModal: true }
})

// Or:
setData({ ...data, retrieveData: true })
Run Code Online (Sandbox Code Playgroud)

在我看来,最好有一个状态,但这可能会以某种我没有考虑的方式影响性能/可读性?

javascript typescript reactjs react-hooks

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

VB.NET如何提供最佳性能"选择案例"或IF ... ELSEIF ... ELSE ... END IF

我有一个巨大的DataTable,我需要遍历每一行并验证一个特定的值.

哪种方法给我更多的性能,IF ELSE或SELECT CASE的结构?(我专注于为我提供最佳性能的方法)

如果是(方法#1)

For Each vRow In vDTtemp.Rows
    If vRow("Item") = "Time" Then
        vRow("Result") = "000"
    ElseIf vRow("Item") = "DateTime" Then
        vRow("Result") = "001"
    ElseIf vRow("Item") = "String" Then
        vRow("Result") = "002"
    Else
        vRow("Result") = "N/A"
    End If
Next
Run Code Online (Sandbox Code Playgroud)

选择案例(方法#2)

For Each vRow In vDTtemp.Rows
    Select Case vRow("Item")
        Case "Time"
            vRow("Result") = "000"
        Case "DateTime"
            vRow("Result") = "001"
        Case "String"
            vRow("Result") = "002"
        Case Else
            vRow("Result") = "N/A"
    End Select
Next
Run Code Online (Sandbox Code Playgroud)

vb.net performance if-statement cycle switch-statement

6
推荐指数
3
解决办法
2万
查看次数

如何获取root url路径

我正在寻找一种方法来获取我的 Web 项目的根 URL;例如:

当地的:

http://localhost:52390/pages/user.aspx

预期结果:http://localhost:52390

信息系统:

http://lst.pg.com/iLearn/pages/user.aspx

预期结果:http : //lst.pg.com/iLearn

存在一种在 ASPX 中实现这一目标的方法吗?或者在 Javascript/jQuery 中?

javascript asp.net url jquery

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

如何使用剪贴板将数据从Excel Sheet复制到DataTable?

我有一个在 Microsoft Framework 3.5 上创建的 Winform 项目。用户可能安装了Windows 7或Windows XP以及Office 2007或更高版本。

我正在研究一个获取剪贴板数据并将其放入 C# 数据表的过程。我已经创建了一个方法来从剪贴板获取原始数据并将其上传到数据表中。

但在某些情况下,Excel 数据显示一个值,但内部有另一个值:

在此输入图像描述

我正在研究一种从 Excel 获取原始数据的方法:

string XmlFmt = "XML Spreadsheet";
var clipboard = Clipboard.GetDataObject();

if (clipboard.GetDataPresent(XmlFmt))
{
    var clipData = clipboard.GetData(XmlFmt);
    StreamReader streamReader = new StreamReader((MemoryStream)clipData);
    streamReader.BaseStream.SetLength(streamReader.BaseStream.Length - 1);

    string xmlText = streamReader.ReadToEnd();
    var stream = new StringReader(xmlText);

    XmlDocument xmlDocument = new XmlDocument();
    xmlDocument.LoadXml(xmlText);

    DataSet dsExcelData = new DataSet();
    dsExcelData.ReadXml(new XmlNodeReader(xmlDocument));
}
Run Code Online (Sandbox Code Playgroud)

但是,此方法会检索一个包含多个表的数据集,其中包含 Excel 数据每个部分的配置: 在此输入图像描述 在此输入图像描述

基本上,我想将这些结构转换为仅包含原始数据的简单数据表。有人可以帮助我提示如何实现这一目标?...我不想在此实现中使用第三方库。

c# datatable excel clipboard xmldocument

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

C# Rider - 2022 年 8 月 - 如何使调试和热重载正常工作?

是我的想法还是 Rider 没有很好地实现 Blazor / Hot Reload?

我尝试 JetBrains 的 Rider IDE 已经超过 6 个月了,我开始更喜欢使用 VS2022。但我最近开始了 Blazor 的一个新项目,从那时起我的观点开始下降......

无法调试具有多个项目的解决方案(如 VS2022 那样)...例如,我有一个包含 1 个服务器项目、1 个客户端项目和 1 个共享项目的解决方案。

使用 VS2022,我能够毫无痛苦地调试这两个项目...但是我用 Rider 尝试了一个月,完全不愉快...我是唯一一个持这种观点的人吗?

有没有办法正确调试 Rider 和 .Net 6 中多个项目的解决方案并使用热重载功能?

c# jetbrains-ide rider blazor hot-reload

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

VB.Net背景渐变使用LinearGradientBrush并显示Image

我尝试使用渐变背景颜色绘制一个表单,并将图像与透明度重叠.

这个有可能?

我想使用具有透明背景的平铺背景图像,并使用自定义线性渐变绘制背景.

vb.net forms graphics

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

VB.Net LINQ - 两个数据表之间的左外连接 - 限制为一行

我在vb.net中遇到LINQ问题.基本上我想在两个数据表之间创建LEFT JOIN.

这是两个数据表的信息:

Dim vDT1 As New DataTable
vDT1.Columns.Add("Key")
vDT1.Columns.Add("Data1")
vDT1.Columns.Add("Data2")

vDT1.Rows.Add({"01", "DATA1_AAAA", "DATA2_AAAA"})
vDT1.Rows.Add({"02", "DATA1_BBBB", "DATA2_BBBB"})

Dim vDT2 As New DataTable
vDT2.Columns.Add("Key")
vDT2.Columns.Add("Data3")
vDT2.Columns.Add("Data4")

vDT2.Rows.Add({"01", "DATA3_AAAA", "DATA4_AAAA"})
vDT2.Rows.Add({"01", "DATA3_BBBB", "DATA4_BBBB"})
vDT2.Rows.Add({"01", "DATA3_CCCC", "DATA4_CCCC"})
vDT2.Rows.Add({"01", "DATA3_DDDD", "DATA4_DDDD"})

Dim vDRnull As DataRow = vDTsec.Rows.Add
Run Code Online (Sandbox Code Playgroud)

为了实现LINQ JOIN,我尝试使用下一句:

From a In vDT1.AsEnumerable
Group Join bTemp In vDT2.AsEnumerable
On a.Field(Of String)("Key") Equals bTemp.Field(Of String)("Key")
Into Group From b In Group.DefaultIfEmpty(vDRnull)
Select a, b
Run Code Online (Sandbox Code Playgroud)

这是结果(但我想删除红色的行),我只想在第二个表中得到第一个:

问题1

任何帮助将不胜感激!


我用正确的方法编辑问题.感谢Jeff Mercado:

Dim vDT1 As New DataTable
vDT1.Columns.Add("Key")
vDT1.Columns.Add("Data1") …
Run Code Online (Sandbox Code Playgroud)

linq vb.net datatable left-join

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

C#如何创建没有括号的扩展

我有一个关于C#的奇怪问题.

我有一个静态类来存储方法作为扩展.然后,我有以下扩展名:

public static bool fwHasData(this DataTable table)
{
    return (table == null || table.Rows.Count == 0) ? true : false;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:当我尝试在我的代码中使用扩展时,存在一些避免使用括号的方法吗?

用法:

bool vHasData = MyDataTable.fwHasData(); // Works fine!
Run Code Online (Sandbox Code Playgroud)

预期用途:

bool vHasData = MyDataTable.fwHasData; // Removing the parentheses
Run Code Online (Sandbox Code Playgroud)

非常感谢!

c# extension-methods

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

C#如何取消执行方法

我有一个委托方法在我的应用程序中运行繁重的进程(我必须使用MS Framework 3.5):

private delegate void delRunJob(string strBox, string strJob);
Run Code Online (Sandbox Code Playgroud)

执行:

    private void run()
    {
        string strBox = "G4P";
        string strJob = "Test";

        delRunJob delegateRunJob = new delRunJob(runJobThread);
        delegateRunJob.Invoke(strBox, strJob);
    }
Run Code Online (Sandbox Code Playgroud)

在该方法的某些部分 runJobThread

我调用外部程序(SAP - 远程函数调用)来检索数据.执行该行可能需要1-30分钟.

private void runJobThread(string strBox, string strJob)
{
    // CODE ...
    sapLocFunction.Call(); // When this line is running I cannot cancel the process
    // CODE ...
}
Run Code Online (Sandbox Code Playgroud)

我想让用户取消整个过程.

怎么能实现这个?我尝试了一些方法; 但我陷入了同样的境地; 当这条特定的线路运行时,我无法停止该过程.

c# multithreading delegates thread-safety

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

样式化组件 / React - Fragment 元素上的样式

我对 StyledComponents 有疑问,是否可以使用React.Fragment或任何其他现有组件创建样式?

我使用这个例子(意图是样式ContainerFragment将背景绘制为蓝色并使用所有样式)

代码笔

如果不可能,是否存在另一种解决方法?显式使用 Fragment 作为示例。


更新:我在这个问题上针对我的真正问题提出了一个具体问题

styles reactjs styled-components

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