2017-08-15 70 views
0

我在網上找到關於React.js的教程,但我看到了導師在沒有setState()函數的情況下更改狀態的方式。我在這裏問這是否是一種好的做法。在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; 
    } 
} 

據我所知,應該作出反應,通過使用setState({answers: {answer1: event.target.value}})設置狀態。我對嗎?什麼是更好的方法?

回答

3

設置/更改響應組件內部的狀態總是應該使用setState,這是建議的反應。狀態可以直接修改的唯一地方就是構造函數。閱讀更多here

也值得一讀this