我想强制用户使用PropTypes 将es6 Map对象传递给React组件,例如:
static propTypes = {
elementsMap: React.PropTypes.map(React.PropTypes.string, editorPropTypes.element).isRequired,
}
Run Code Online (Sandbox Code Playgroud)
但看起来在React中没有这样的东西.(官方文件).
例如,如果我想添加require("index.less")到所有文件并忽略此行,如果该文件不存在.我该怎么做(例如使用装载机).
如果我有两个提交,它们之间有许多提交的距离,并且在它们两个中提交了许多文件,那么如何最好地将一个大块从一个移动到另一个,例如:
在提交 100 中:我在文件“aa.txt”以及这个文件中有许多文件更改和许多更改:
- aaaa
- bbbb
+ cccc
10 次提交后,我又有一次提交更改了很多文件和“aa.txt”:
+dddd
我想将行更改-aaaa从前者移动到后者。
是否有任何 CLI/UI 工具可以帮助您轻松完成此操作?(我显然对历史重写没有问题)
假设我要删除地图的前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)
但是它看起来效率低下。
从这些文档: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)
例如没有成功.
我刚刚得到了一个很难解决的主要错误,经过大量工作后发现它是因为两个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) ecmascript-6 ×3
javascript ×3
e2e-testing ×1
ecmascript-7 ×1
git ×1
html ×1
html5 ×1
next.js ×1
reactjs ×1
require ×1
syntax ×1
testcafe ×1
webpack ×1