Как остановить сцепление между двумя значениями состояния - PullRequest
0 голосов
/ 09 ноября 2019

Каждый раз, когда я пытаюсь запустить этот блок кода, он просто объединяет a и b вместе. Все остальные математические операторы работают как положено, кроме +. Есть ли способ остановить / обойти это?

export default class DataInput extends Component {
  constructor(props) {
    super(props);
    this.state = {
      a: 0,
      b: 0,
    };
  }


  handleCalculate = () => {
    const { a, b} = this.state;
    let average = (a + b)/2;

    this.setState({ results: average });
  };

  render() {
    return (
      <View style={styles.DataInput}>
          <View style={styles.value}>
            <TextInput
              placeholder="Bench Press"
              onChangeText={a => this.setState({ a })}
              keyboardType={"numeric"}
            />
          </View>
          <View style={styles.value}>
            <TextInput
              placeholder="Shoulder Press"
              onChangeText={b => this.setState({ b })}
              keyboardType={"numeric"}
            />
          </View>
      </View>

Ответы [ 3 ]

0 голосов
/ 09 ноября 2019

Вам необходимо деструктурировать a & b для вашей операции, см. Код ниже:

  export default class DataInput extends Component {
      constructor(props) {
        super(props);
        this.state = {
          a: 0,
          b: 0,
        };
      }


      handleCalculate = () => {
        const { a, b} = this.state; // destructure a & b 
        let average = (a + b)/2;

        this.setState({ results: average });
      };

      render() {
        return (
          <View style={styles.DataInput}>
              <View style={styles.value}>
                <TextInput
                  placeholder="Bench Press"
                  onChangeText={value => this.setState({ a: value })}
                  keyboardType={"numeric"}
                />
              </View>
              <View style={styles.value}>
                <TextInput
                  placeholder="Shoulder Press"
                  onChangeText={value => this.setState({ b: value })}
                  keyboardType={"numeric"}
                />
              </View>
          </View>
0 голосов
/ 09 ноября 2019

попробуй: let average = (parseInt(a)+parseInt(b))/2

0 голосов
/ 09 ноября 2019

при обновлении состояния на входе должно быть

onChangeText={a => this.setState({...this.state, a })} //bench press
onChangeText={a => this.setState({...this.state, b })} //shoulder press
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...