javascript - 反应嘶嘶声
问题描述
我是 React 新手,我的 Fizz-Buzz 应用程序一直有问题。控制台输出似乎没问题,但显示总是增加控制台编号。输出如下:
控制台:1 / 显示:2 / 文本:/ 显示文本:
控制台:2 / 显示:3 / 文本:/ 显示文本:
控制台:3 / 显示:4 / 文本:Fizz / 显示文本:Fizz
编码:
class FizzBuzz extends Component {
constructor() {
super()
this.state = {
number: 1,
fizzbuzz: ""
}
this.onClick = this.onClick.bind(this)
this.fizzOrBuzz = this.fizzOrBuzz.bind(this)
}
onClick() {
let tempNo = this.state.number + 1
this.setState({ number: tempNo })
console.log(this.state.number)
this.fizzOrBuzz()
}
fizzOrBuzz() {
if ((this.state.number % 3 === 0) && (this.state.number % 5 === 0)) {
console.log("fizz buzz")
this.setState({ fizzbuzz: "Fizz-Buzz" })
} else if (this.state.number % 3 === 0) {
console.log("fizz")
this.setState({ fizzbuzz: "Fizz" })
} else if (this.state.number % 5 === 0) {
console.log("buzz")
this.setState({ fizzbuzz: "Buzz" })
} else {
this.setState({ fizzbuzz: "" })
}
console.log(this.state.number)
}
render() {
return (
<div className="App">
<p>Number: {this.state.number}</p>
<h2>{this.state.fizzbuzz}</h2>
<button onClick={this.onClick}>Next</button>
</div>
)
}
}
export default FizzBuzz
如何让页面呈现与控制台相同的数字?
解决方案
正如我在评论中提到的,this.setState()
它是异步的,你必须调用this.fizzOrBuzz()
它作为它的回调。
但是,由于数字的嘶嘶声或嗡嗡声始终可以从数字本身推导出来,因此它根本不应该处于状态。
function fizzOrBuzz(number) {
if (number % 3 === 0 && number % 5 === 0) {
return "Fizz-Buzz";
} else if (number % 3 === 0) {
return "Fizz";
} else if (number % 5 === 0) {
return "Buzz";
}
return "";
}
class FizzBuzz extends Component {
constructor() {
super();
this.state = {
number: 1,
};
this.onClick = this.onClick.bind(this);
}
onClick() {
this.setState({ number: this.state.number + 1 });
}
render() {
return (
<div className="App">
<p>Number: {this.state.number}</p>
<h2>{fizzOrBuzz(this.state.number)}</h2>
<button onClick={this.onClick}>Next</button>
</div>
);
}
}
推荐阅读
- python - 使用 pandas 从数据框中提取数据
- javascript - 如何加快搜索循环?
- azureservicebus - 异常连接尝试失败,因为连接方在一段时间后没有正确响应
- vue.js - Vue中动态加载组件
- database - Oracle - 执行递归“WITH”查询时检测到循环
- django-rest-framework - Python; django-rest-framework - 不寻常的继承行为
- python - Python/Numpy:如何提取 numpy 数组任何维度的内部?
- php - 我想在 laravel 中创建登录,并在 cmd 中遇到问题: php artisan make:auth
- python - 我真的可以在不破坏东西的情况下删除这个看似多余的代码吗?
- c++ - 为什么“=default”析构函数与隐式声明的析构函数不同?