在React Native中访问切换开关状态

时间:2017-01-24 05:11:28

标签: react-native

我正在制作一个计算器,在一个屏幕上有多个开关(使用react-native Switch)。根据启用或禁用的开关,我想写一个if / else语句。在我的if / else语句中,我想访问Switch的值,无论是打开还是关闭。 Facebook React Native Switch页面并不清楚我如何使用交换机并传递信息。

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



export class TimiCalculator extends Component {


constructor(props) {
  super(props);
  this.state = { SwitchValue: false };
}

render() {
  return (
   <View style={styles.container}>
    <Switch 
      onValueChange={(value) => this.setState({SwitchValue: value})}
      value={this.state.SwitchValue} />
  </View>

    <TouchableOpacity style={styles.buttonCalculate} onPress={this.showCalculation}>
    <Text style={styles.title}> Calculate </Text>
    </TouchableOpacity>

  </View>
  );
}

showCalculation() {

if (ACCESS_STATE_OF_TOGGLE_SWITCH_HERE == true) {
*DO THIS
} else {
*DO THIS INSTEAD
}

Alert.alert('Your output is' + answer)
}

}

2 个答案:

答案 0 :(得分:3)

我建议你阅读https://facebook.github.io/react-native/docs/state.html,因为状态是React开发的基础。在这种情况下,你不知道如何引用状态。

这是最简短,最干净的答案

import React, { Component } from 'react';
import {
  Text,
  View,
  TouchableOpacity,
  Switch,
} from 'react-native';

export class TimiCalculator extends Component {
  state = {isSwitchOn: false}

  showCalculation = () => {
    if (this.state.isSwitchOn) {
      // do something
    } else {
      // do something else
    }
  }

  render() {
    return (
      <View style={styles.container}>
        <Switch 
          onValueChange={isSwitchOn => this.setState({isSwitchOn})}
          value={this.state.isSwitchOn} 
        />
        <TouchableOpacity style={styles.buttonCalculate} onPress={this.showCalculation}>
          <Text style={styles.title}> Calculate </Text>
        </TouchableOpacity>
      </View>
    );
  }
}

答案 1 :(得分:1)

showCalculation() {

if (this.state. SwitchValue == true) {
//do here what you want 
this.setState({SwitchValue:false});
} else {

this.setState({SwitchValue: true});

}

如果你想实现计算器,我建议你使用这段代码。

here