【发布时间】:2019-09-01 21:51:35
【问题描述】:
Test组件状态为num,组件实现点击按钮num+1的功能,按钮绑定自增方法,keyup也绑定方法,方法使用setState重新渲染num的值,但是鼠标点击按钮的效果和键盘触发事件不一样。请告诉我为什么?
当我点击按钮时,控制台首先记录num,然后是done。
但是当我按下回车键时,控制台会记录done,然后是num。
React15.5
class Test extends React.PureComponent {
constructor(){
super();
this.state = {
num : 1
}
}
add = () => {
const {num} = this.state;
this.setState({num:num+1},()=>{
console.log("done")
})
console.log(this.state.num)
}
componentDidMount() {
document.body.addEventListener('keyup', this.add);
}
componentWillUnmount() {
document.body.removeEventListener('keyup', this.add);
}
render() {
return(
<Button onClick={this.add} >add</Button>
<span>{this.state.num}</span>
)
}
}
【问题讨论】:
-
你在其他地方有 Button 组件吗?还是用大写 B 的 Button 拼写错误?
-
@duc mai 我从第三方库中导入Button,只需要一次,别无他处
标签: javascript reactjs