我如何通过react

问题描述

我有一个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的操作必须返回一个新值,而不是直接更改状态。

请在以后的操作中考虑到这一点,因为它会给您的应用程序带来可怕的副作用。

you can read about it here.