【发布时间】:2020-04-04 01:43:35
【问题描述】:
一旦第 次点击,下面的函数就会被调用。这适用于 Firefox,但不适用于 Chrome。
handleSort(event) {
let id = event.target.id;
this.setState(prev => {
console.log(prev);
return {
[id]: !prev[id],
books: prev.books.sort((a, b) =>
prev[id] ? a[id] < b[id] : a[id] > b[id]
)
};
});
}
【问题讨论】:
-
你做了哪些测试? Chrome 中是否有任何内容被吐到您的控制台上?
-
为什么就地排序,直接修改状态?
-
我猜您的问题与 Sorting in JavaScript: Shouldn't returning a boolean be enough for a comparison function? 有关,但不确定为什么它会在 firefox 中起作用?
-
您实现比较器的方式适用于 Firefox,因为(也许)Firefox 引擎假定
boolean值true和false分别为-1和1。 Chrome 的实现似乎更敏感,因为它明确希望您从sort比较器返回-1、0或1之一。很高兴知道 Chrome 控制台中是否有任何错误。 -
@MananShah 嘿,你是对的。一旦我对平等进行了另一个比较,它就会很好地工作。
标签: javascript reactjs