State(状态值)

state控制组件内部的状态,state改变,重新render()界面重新渲染

定义一个state值

  1. import React from 'react'
  2. class App extends React.Component{
  3. constructor(){
  4. super()
  5. //state属性等于一个对象
  6. //对象内可以是一个数、数组、对象、布尔值等等,用,隔开
  7. this.state = {
  8. num:0
  9. }
  10. }
  11. render(){
  12. return(
  13. <div>
  14. {this.state.num}
  15. </div>
  16. )
  17. }
  18. }
  19. export default App

setState(接受对象参数)

修改setState的方法可以触发render自动更新(界面重新渲染)

利用setState方法实现点击+1

  1. import React from 'react'
  2. class App extends React.Component{
  3. constructor(){
  4. super()
  5. this.state = {
  6. num:0
  7. }
  8. }
  9. handleClick(){
  10. this.setState({
  11. num: ++this.state.num
  12. })
  13. }
  14. render(){
  15. let styles={textAlign:'center'}
  16. return(
  17. <div>
  18. <span style={styles}>{this.state.num}</span><br />
  19. <input type='button' value='+1' onClick={this.handleClick.bind(this)} /><br />
  20. </div>
  21. )
  22. }
  23. }
  24. export default App

利用setState方法切换状态值

  1. import React from 'react'
  2. class App extends React.Component{
  3. constructor(){
  4. super()
  5. this.state = {
  6. show:true
  7. }
  8. }
  9. handleClick(){
  10. this.setState({
  11. show:!this.state.show
  12. })
  13. }
  14. render(){
  15. return(
  16. <div>
  17. <input type='button' value={this.state.show ? '显示' : '不显示'} onClick={this.handleClick.bind(this)} />
  18. <p>{this.state.show ? '哈哈' : ''}</p>
  19. </div>
  20. )
  21. }
  22. }
  23. export default App

setState的应用

  1. import React from 'react'
  2. class App extends React.Component{
  3. constructor(){
  4. super()
  5. this.handleClick = this.handleClick.bind(this)
  6. this.state = {
  7. num:0,
  8. show:false
  9. }
  10. }
  11. handleInc(num){
  12. this.setState({
  13. num: (this.state.num + num)<0 ? 0 : this.state.num + num
  14. })
  15. }
  16. handleClick(){
  17. this.setState({
  18. show:!this.state.show
  19. })
  20. }
  21. render(){
  22. let styles={textAlign:'center'}
  23. return(
  24. <div>
  25. <span style={styles}>{this.state.num}</span><br />
  26. <input type='button' value='+1' onClick={this.handleInc.bind(this,1)} />
  27. <input type='button' value='-1' onClick={this.handleInc.bind(this,-1)} /><br />
  28. <input type='button' value={this.state.show ? '显示' : '好人'} onClick={this.handleClick} />
  29. <p onClick={this.handleClick} >
  30. {this.state.show ? '出来混总是要还的' : '是你毁了一个我当好人的机会'}
  31. </p>
  32. </div>
  33. )
  34. }
  35. }
  36. export default App