今天我尝试使用Fluent-ui 的分组详细信息列表。
我的期望:我需要声明一些组,比如说红色、蓝色、绿色,然后添加到每个项目,我想添加到列表中,这是一个将项目映射到组的特定属性。例如:
groups: [
{ key: 'red', name: 'Color: "red"'},
{ key: 'green', name: 'Color: "green"'},
{ key: 'blue', name: 'Color: "blue"' },
],
items: [...,
{ key: 'red',anyProp1: "abc", anyProp2: "dfg",...},
...,
]
Run Code Online (Sandbox Code Playgroud)
我发现我必须做的事情:我需要对包含我的项目的数组进行排序,属于红色组的所有项目都需要位于一个块中。例如:[红,红,红,蓝,蓝,绿,绿,绿]。现在我需要提供有关 startIndex 和 count 的信息,以将我的项目数组映射到组。
组的定义可能如下所示:
groups: [
{ key: 'groupred0', name: 'Color: "red"', startIndex: 0, count: 2, level: 0 },
{ key: 'groupgreen2', name: 'Color: "green"', startIndex: 2, count: 0, level: 0 },
{ key: 'groupblue2', name: 'Color: "blue"', startIndex: 2, …Run Code Online (Sandbox Code Playgroud) javascript office-ui-fabric office-ui-fabric-react fluent-ui
假设我们有两个表,一个是Paginated,另一个是Scrollable。两者都允许通过单击任何列标题对记录进行排序。
假设该表有6 列的5000条记录。当用户单击任何一列进行排序时,我的理解是整个5000条记录都将被排序并且我的表状态将得到更新。
我有一个项目要提前,它可能涉及大量数据记录,列排序是一个强制性功能。我想验证我对这个用例渲染速度的理解是否正确?
在这两种情况下,我可以了解哪些优化?
跟进:-
如果我无论如何都要进行表格分页,我真的需要反应窗口或反应虚拟化吗?
考虑以下片段:-
function Custom(){}
// prints {}
console.log(Object());
// prints []
console.log(Array());
// prints undefined
console.log(Custom())
// prints {}
console.log(new Custom());Run Code Online (Sandbox Code Playgroud)
我知道自定义函数构造函数需要一个new以 bind 为前缀的关键字this。为什么对ArrayandObject构造函数不是必需的?
虽然这是一个常见问题,但我找不到任何线索来获得预期的结果。所以问题来了。我有以下数组:
[
[ 'a' ]
[ 'a', 'b' ]
[ 'a', 'c' ]
[ 'a', 'c', 'd' ]
[ 'a', 'c', 'd', 'e' ]
]
Run Code Online (Sandbox Code Playgroud)
我想要的最终结果是这样的对象:
{
a: {
b: {},
c: { d: { e: {} } }
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白哪种方法会更好地获得这个结果以及如何实现它。
根据MDN,
Promise.all() 方法将一个可迭代的 promise 作为输入,并返回一个解析为输入 promise 结果数组的单个 Promise。当所有输入的承诺都已解决,或者输入可迭代对象不包含承诺时,此返回的承诺将解决。它在任何输入承诺拒绝或非承诺抛出错误时立即拒绝,并且将拒绝此第一个拒绝消息/错误。
这是一个代码片段,它没有像我预期的那样按照上面的定义捕获错误:-
const promise1 = Promise.resolve(3);
const promise2 = () => {throw new Error('random error')};
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2(), promise3]).then((values) => {
console.log(values);
}).catch(e=>console.log('Error caught',e));Run Code Online (Sandbox Code Playgroud)
我知道如果我将其转换promise2()为返回一个拒绝的Promise,那么它将起作用。但是非承诺线呢?是不正确还是我遗漏了什么?
更新- 我得到了这种行为的答案。只是好奇非承诺根据定义抛出错误的可能情况是什么?