【发布时间】:2020-07-19 11:48:09
【问题描述】:
我有 BubbleSort 组件,但是当我开始排序过程时出现问题并且我的排序工作不正确。我敢肯定,算法本身是正确编写的。我想设置状态过程有问题,但无法弄清楚它可能是什么。
import React, {Component} from "react";
import ArrayView from "../ArrayView/ArrayView";
export default class BubbleSort extends Component{
state = {
elements: this.props.elements
}
sort = () => {
const length = this.state.elements.length;
for (let i = 0; i < length; i++) {
for (let j = i + 1; j < length; j++) {
if (this.state.elements[i].value > this.state.elements[j].value) {
this.swap(i, j);
}
}
}
}
swap = (first, second) => {
this.setState((state) => {
const newElements = [...state.elements];
const temp = newElements[first];
newElements[first] = newElements[second];
newElements[second] = temp;
return {
elements: newElements
}
})
}
render() {
const { elements } = this.state;
return (
<ArrayView elements={elements} onSort={this.sort} />
)
}
}
【问题讨论】:
-
创建一个可运行的示例很棒,但请使用 Stack Snippets(
[<>]工具栏按钮)在此现场进行。 Stack Snippets 支持 React,包括 JSX; here's how to do one. -
这个例子有什么问题?每次点击,您似乎都会对算法进行一次迭代
-
您可以使用
Promise和async-await语法在每次状态更新之间添加延迟。
标签: javascript reactjs sorting react-state-management