问题描述
我有一个onClick方法来响应,该方法会更改名为指针的属性的状态。该功能在功能级别上起作用,但是除非双击按钮(onClick方法),否则UI不会以我的状态更新。我尝试将组件转换为类组件以利用render方法,但仍然没有结果。
let questions = [
{
id: 1,title: "This person tends to be quiet"
},{
id: 2,title: "This person is compassionate and has a soft heart."
},{
id: 3,title: "This person is disorganized.."
}
]
export default class Quiz extends React.Component {
constructor() {
super();
this.state = {
pointer: 0,currentAnswer: ""
};
}
render() {
return (
<div>
<h1> {questions[this.state.pointer].title}</h1>
<button onClick={(e) => {
e.preventDefault();
this.setState({
pointer: this.pointer++
});
console.log(this.pointer);
this.forceUpdate();
}}>
</div>
)
}
解决方法
问题是我需要将“ this.state.pointer +1”而不是“ this.pointer ++”放入。谢谢,冰镐
,您只是写了它,但至少我会给您一个解释。
对State的每个操作都必须以不变的方式执行,这基本上意味着,当您调用setState函数时,提供给setState的操作必须返回一个新值,而不是直接更改状态。
请在以后的操作中考虑到这一点,因为它会给您的应用程序带来可怕的副作用。