反应本地setstate不更改状态值

时间:2020-04-04 18:37:12

标签: reactjs react-native

**正在研究本机类组件

setState函数未更新状态 我在控制台上得到的输出为: 你好 再见

请救我!

**

export default class App extends Component {

  constructor(props){
    super(props)
    this.state = {
      light : false,
      AC : false
    }
    console.log("hello")

    this.setState({ light: true }, () => { console.log("state changed") })
    console.log("byezz")
  }

  render() {
    return (
      <View style={styles.container}>
        <StatusBar barStyle="dark-content" />
        <Text style={styles.welcome}>
          Home Assistant
        </Text>
        <ScrollView>
          <Card />
        </ScrollView>
      </View>
    );
  }
}

1 个答案:

答案 0 :(得分:1)

尝试将this.setState()呼叫放在componentDidMount中,例如:

export default class App extends Component {

  constructor(props){
    super(props)
    this.state = {
      light : false,
      AC : false
    }
    console.log("hello")
    console.log("byezz")
  }

  componentDidMount(){
    this.setState({ light: true }, () => { console.log("state changed") })
  }

  render() {
    return (
      <View style={styles.container}>
        <StatusBar barStyle="dark-content" />
        <Text style={styles.welcome}>
          Home Assistant
        </Text>
        <ScrollView>
          <Card />
        </ScrollView>
      </View>
    );
  }
}

问题在于在constructor中设置状态是无用的,因为您可以在其中直接使用state对象来设置状态。更新状态会触发重新渲染,这仅在您的组件已经渲染一次(甚至在构造函数中甚至没有渲染过)时才有意义