**正在研究本机类组件
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>
);
}
}
答案 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
对象来设置状态。更新状态会触发重新渲染,这仅在您的组件已经渲染一次(甚至在构造函数中甚至没有渲染过)时才有意义