如何改变本地的状态值?

时间:2017-07-17 06:31:11

标签: react-native

我在更改状态值时遇到问题。它会给出mi跟随错误 “Undefine不是一个功能(评估'    this.setState({      switchValue:假 })')“

我已经搜索了堆栈溢出,但解决方案对我不起作用。

import React, { Component } from 'react';
import {
    Alert,
    AppRegistry,
    StyleSheet,
    Text,
    View,
    Switch
} from 'react-native';

export default class AwesomeProject extends Component {
   constructor(props) {
   super(props);
   this.state = {switchValue: true};

// Toggle the state every second

}
_onPressButton() {  
   this.setState({
   switchValue: false
 });
} 
render() {
return (
  <View style={styles.container}>
    <Text style={styles.welcome}>
      Welcome to React Native!
    </Text>     
    <Switch 
      onValueChange={this._onPressButton}
      value={this.state.switchValue } 
    />      
  </View>
);
}
}

const styles = StyleSheet.create({
container: {
   flex: 1,
   justifyContent: 'center',
   alignItems: 'center',
   backgroundColor: '#F5FCFF',
  },
 welcome: {
   fontSize: 20,
   textAlign: 'center',
  margin: 10,
},
instructions: {
  textAlign: 'center',
  color: '#333333',
  marginBottom: 5,
},

});

AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);

1 个答案:

答案 0 :(得分:0)

this内的_onPressButton未引用正确的引用。在这种情况下,this内的_onPressButton实际上是引用按钮。你可以这两种方式做到这一点。

   <Switch 
      onValueChange={this._onPressButton.bind(this)}
      value={this.state.switchValue } 
    />

或者

   <Switch 
      onValueChange={() => this._onPressButton()}
      value={this.state.switchValue } 
    />