在React.js中不使用setState设置State

时间:2017-08-15 02:09:39

标签: reactjs

我在网上找到了关于React.js的教程,但是我看到了导师在没有setState()函数的情况下改变状态的方式。我在这里问这是否是一个好习惯。

构造函数:

constructor(props) {
    super(props);
    this.state = {
      uid: uuid.v1(),
      name: '',
      answers: {
          answer1: '',
          answer2: '',
          answer3: ''
      },
      isSubmitted: false
    };
    this.onSubmit = this.onSubmit.bind(this);
    this.answerSelected = this.answerSelected.bind(this);
    this.questionSubmitted = this.questionSubmitted.bind(this);
}

他更新州的方式是: -

answerSelected(event) {
    let answers = this.state.answers;
    if (event.target.name === 'answer1') {
        answers.answer1 = event.target.value;
    } else if (event.target.name === 'answer2') {
        answers.answer2 = event.target.value;
    } else if (event.target.name === 'answer3') {
        answers.answer3 = event.target.value;
    }
}

据我所知,React应该使用setState({answers: {answer1: event.target.value}})来设置状态。我对吗?什么是更好的方法?

1 个答案:

答案 0 :(得分:3)

设置/更改反应组件内部的状态始终应该使用setState,这是反应建议的内容。唯一可以直接修改state的地方是构造函数。阅读更多here

还值得一读this