【发布时间】:2020-06-25 22:52:14
【问题描述】:
我正在尝试在 react 中构建一个简单的应用程序,它接受一个未排序的数组 (this.state.dataset),然后插入对其进行排序并呈现排序过程的每次迭代。
因为 React 是在每次数组更改后异步放置一个 setstate 不起作用。任何想法如何解决这个问题?
我可以通过在每次数组更改后简单地退出函数然后渲染它,然后使用更新的数组重新启动冒泡排序来使用冒泡排序来做到这一点。但是我不能让这种方法在这里工作。我知道效率很低,对不起,我是新手..
render() {
return (
<div className="buttons">
<button onClick={this.sort}>Insertion Sort</button>
</div>
);
}
sort(e) {
this.myInterval = setInterval(() => {
let arr = this.insertionSort();
this.setState({
dataset: arr,
});
}
}, 1000);
insertionSort(e) {
let inputArr = this.state.dataset
let length = inputArr.length;
for (let i = 1; i < length; i++) {
let key = inputArr[i];
let j = i - 1;
while (j >= 0 && inputArr[j] > key) {
inputArr[j + 1] = inputArr[j];
j = j - 1;
return inputArr //Added by me to stop loop and render (probably wrong solution)
}
inputArr[j + 1] = key;
return inputArr //Added by me to stop loop and render (probably wrong solution)
}
return inputArr;
};
(我的 render() 方法中有 this.state.dataset 渲染,但为简洁起见将其排除在外
【问题讨论】: