小编Vit*_*man的帖子

es6(弱)映射集的右反应组件PropTypes

我想强制用户使用PropTypes 将es6 Map对象传递给React组件,例如:

static propTypes = {
  elementsMap: React.PropTypes.map(React.PropTypes.string, editorPropTypes.element).isRequired,
}
Run Code Online (Sandbox Code Playgroud)

但看起来在React中没有这样的东西.(官方文件).

javascript ecmascript-6 reactjs

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

webpack中的可选依赖项

例如,如果我想添加require("index.less")到所有文件并忽略此行,如果该文件不存在.我该怎么做(例如使用装载机).

require ecmascript-6 webpack ecmascript-7

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

我如何在提交之间移动部分更改(大块)?

如果我有两个提交,它们之间有许多提交的距离,并且在它们两个中提交了许多文件,那么如何最好地将一个大块从一个移动到另一个,例如:

在提交 100 中:我在文件“aa.txt”以及这个文件中有许多文件更改和许多更改: - aaaa - bbbb + cccc

10 次提交后,我又有一次提交更改了很多文件和“aa.txt”: +dddd

我想将行更改-aaaa从前者移动到后者。

是否有任何 CLI/UI 工具可以帮助您轻松完成此操作?(我显然对历史重写没有问题)

git

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

如何在不重新创建Map的情况下从ES6 Map对象删除前N个项目?

假设我要删除地图的前100个条目而不重新创建地图,并且还要以最有效的方式进行。

假设您有500个项目的ES6 Map Object

let map = new Map(... 500 items)
Run Code Online (Sandbox Code Playgroud)

目前我是这样的:

const newCache = new Map(
  Array.from(map).slice(100)
)

map.clear()

map = newCache
Run Code Online (Sandbox Code Playgroud)

但这会重新创建地图。

另一种方法是运行前100个键:

Array.from(map.keys())
     .slice(0, 100)
     .forEach(key => map.delete(key))
Run Code Online (Sandbox Code Playgroud)

但是它看起来效率低下。

javascript syntax ecmascript-6

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

如何等待加载时间较长的页面加载testcafe?

从这些文档:https: //devexpress.github.io/testcafe/documentation/test-api/actions/navigate.html

看起来我们只能等待15秒才能加载页面.

我们开发了一个NextJS应用程序,它的首次加载需要40秒,因为它在第一次加载时构建应用程序.

我似乎无法使TestCafe在初始页面加载时没有超时.

我试过了

fixture('Restaurant List')
  .page('http://localhost:3000/something')
  .beforeEach(async () => {
    await waitForReact(120000);
  });
Run Code Online (Sandbox Code Playgroud)

例如没有成功.

automated-tests e2e-testing testcafe next.js

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

我如何发现重复自己的HTML元素ID?

我刚刚得到了一个很难解决的主要错误,经过大量工作后发现它是因为两个HTML元素具有相同的ID属性.

是否有一个命令可以在整个DOM中发现双ID?


更新:

在阅读了所有评论之后,我在一个相对较大的网站(http://www.powtoon.com html5工作室)中测试了不同的方法,结果如下.

如果你有更好的方法,请评论这两个.

两个答案都返回了相同的结果,但看起来querySelectorAll确实更快:

QuerySelectorAll

function getDuplicateIdsUsingQuerySelector(){
  const idsOccurances = Array.from(document.querySelectorAll('[id]'))
    .map(elem => elem.id)
    .reduce((allIDs, id) => {
      allIDs[id] = (allIDs[id] || 0) + 1
      return allIDs
    }, {})
  return Object.entries(idsOccurances)
    .filter(([id, occurances]) => occurances > 1)
    .map(([id]) => id)
}
Run Code Online (Sandbox Code Playgroud)

平均每次通话1.5ms.

正则表达式

function getDuplicateIdsUsingRegEx(){
  const idRegex = / id=".*?"/ig
  const ids = document.body.innerHTML.match(idRegex)
  const idsOccurances = ids.reduce((allIDs, id) => {
    allIDs[id] = (allIDs[id] || 0) + 1
    return allIDs
  }, {})

  return Object.entries(idsOccurances) …
Run Code Online (Sandbox Code Playgroud)

html javascript html5

0
推荐指数
1
解决办法
132
查看次数