小编Ave*_*koz的帖子

选择选项时如何避免 Material UI 选择焦点?

我正在尝试使用Material UI 组件库中的Select和制作一个界面Input。我希望我的 UI/UX 的当前行为按以下顺序显示:1. 用户从Select元素 2 中选择选项。Input当用户从中选择某些内容时将聚焦Select

你可以看到它是如何工作的(参见第二个Select,因为第一个是原生的Select,它不适合我的目的):https : //codesandbox.io/s/l4nq3pjjrm

上面示例中的第一个效果很好,但我需要非本地变体。

我怎么能做到这一点?谢谢。

PS 另外,我发现该错误Select行为还有另一个问题,请查看我的 github 帖子以了解详细信息。( https://github.com/mui-org/material-ui/issues/11964 )

element reactjs material-design

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

javascript 提升:首先提升什么——变量还是函数?

最近我对 javascript 提升行为感到困惑,现在我陷入了困境。

所以,有两个例子。

var alpha = 'alpha';

var beta = 'beta';

f(); //beta


var f = function f1() {
    console.log(beta);
};

function f() {
    console.log(alpha);
}

f(); // alpha
Run Code Online (Sandbox Code Playgroud)

第一个按预期工作,因为当 Javascript 设置词法环境时,函数声明会覆盖我们的变量 f(值为“未定义”)。

但第二个给了我动力,我不明白一些事情。

var alpha = 'alpha';

var beta = 'beta';

f();  // - alpha


function f() {
    console.log(alpha);
}

var f = function f1() {
    console.log(beta);
};


f(); // beta
Run Code Online (Sandbox Code Playgroud)

为什么变量f没有提升到代码的顶部,并覆盖之前我们提升的函数?为什么在“first f”调用中我收到“alpha”。我认为,这一定是一个错误,如:“f 不是函数”,因为在第一个 f调用中,我例外, f 将是“未定义”

javascript variables function hoisting

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

禁止使用Array <T>的数组类型

我的Ttslint会抛出这种结构的警告(禁止使用Array的数组类型.使用T [代替(array-type)):

Array<string | null> | null
Run Code Online (Sandbox Code Playgroud)

这是否正确替换上一个?

(string | null)[] | null
Run Code Online (Sandbox Code Playgroud)

javascript arrays typescript

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

当我们将数字格式化为US格式时,如何将两个正则表达式合二为一

我想把两个正则表达式合二为一,但我不知道如何在我的情况下做到这一点.所以,我想做下一件事:格式化为US格式的函数,只需添加1000的逗号,就像1000等等.(我知道toLocaleString('en-US'),Intl.NumberFormat.prototype.format但这些不适合我的情况).为了使用正则表达式,我尝试了这个表达式:/\d(?=(\d{3})+\.)/g它运行良好,但只有当我们的数字包含(例如1000.23),但如果没有点,则当前的正则表达式将不起作用.(证明: https ://regex101.com/r/93O0gJ/1)

还有另一个正则表达式,我必须使我的功能正常工作:/\d(?=(\d{3})+$)/g但它只有在我们根本没有点时才能正常工作.如果我们有点,它将用逗号替换浮点数或小数部分,并且它不符合我的要求.(对于编号1000.12345678,我的编号类似于"1000.12,345,678").但是没有数字点,一切都运作良好.(证明:https://regex101.com/r/BHikK7/1)

所以,对于我的情况,我创建了一个函数来检查:如果数字有点,我使用第一个正则表达式,如果没有,我使用第二个:

const formatNumberToUSFormat = (numberToFormat: number):string => {
  const stringNumber = numberToFormat.toString()

  return stringNumber.match(/\./g) ?
    stringNumber.replace(/\d(?=(\d{3})+\.)/g, '$&,') : 
    stringNumber.replace(/\d(?=(\d{3})+$)/g, '$&,')
}
Run Code Online (Sandbox Code Playgroud)

我的主要问题 - 如何在我的情况下将两个正则表达式合二为一,以避免对点进行不必要的检查等等.提前致谢.

javascript regex typescript

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