【问题标题】:Temperature Calculator in React NativeReact Native 中的温度计算器
【发布时间】:2020-06-02 22:12:19
【问题描述】:

我正在尝试开发一个基本的温度计算,但我有点卡住了。但是,我已经让它有点工作了,每当单击一个按钮时,它们最终都会显示结果(其中一个错误)和一个正确。此外,文本和文本输入同时更改。请帮忙!

谢谢,

 import React, {Component} from 'react';
 import { TextInput,View, Text, Button, StyleSheet } from 'react-native';

 export default class App extends React.Component {

 state = {
    celsius: 0,
    fahrenheit: 0,    
}
updateState = () => this.setState ( {

    celsius: (this.state.celsius * 9/5) + 32,
    fahrenheit: (this.state.fahrenheit - 32) * 5 / 9
})   
render() {
    const  { celsius, fahrenheit } = this.state

    return (
        <View style={styles.container}>

            <h1> Temperature Converter</h1>

            <TextInput
            value={this.state.celsius}
            onChangeText={ (celsius) => this.setState({ celsius })}
            placeholder={'Celsius Here'}
            style={styles.input}
            />
            <Text style={styles.input}> {celsius} </Text>

            <Button onPress = { () => { this.updateState()}} title="Convert Celsius" />

            <Text>{"\n"}</Text>

            <TextInput
            value={this.state.fahrenheit}
            onChangeText={ (fahrenheit) => this.setState({fahrenheit})}
            placeholder={'Fahrenheit Here'}
            style={styles.input}
            />
            <Text style={styles.input}> {fahrenheit} </Text>

            <Button onPress = { () => {this.updateState()}} title="Convert Fahrenheit" />

          </View>
    )
}

}

【问题讨论】:

    标签: javascript html reactjs react-native


    【解决方案1】:

    你遇到问题是因为

    updateState = () => this.setState ( {
    
    celsius: (this.state.celsius * 9/5) + 32,
    fahrenheit: (this.state.fahrenheit - 32) * 5 / 9
    }) 
    

    您的初始摄氏度和华氏度为 0。

    您在第一次输入时填写 50 摄氏度。 然后你按下按钮然后你调用函数。

    它将摄氏度转换为 122。 而fahrenheit: (this.state.fahrenheit - 32) * 5 / 9 这一行将 0 作为华氏温度并计算为 -17.something。 它会改变变量的状态。每当您按下按钮时,它都会继续播放。

    将两个公式分别放在两个不同的函数中后尝试。

    试试这个我做了一些改变

    import React, {Component} from 'react';
     import { TextInput,View, Text, Button, StyleSheet } from 'react-native';
    
    export default class App extends React.Component {
    
     state = {
    celsius: null,
    fahrenheit: null,  
    celsius1: null,
    fahrenheit1: null,   
    }
     updateState = () => this.setState ( {
    
    fahrenheit: (this.state.celsius * 9/5) + 32,
    //fahrenheit: (this.state.fahrenheit - 32) * 5 / 9
     })  
     updateState1 = () => this.setState ( {
    
    //celsius: (this.state.celsius * 9/5) + 32,
    celsius1: (this.state.fahrenheit1 - 32) * 5 / 9
      })  
     render() {
    const  { celsius, fahrenheit, celsius1, fahrenheit1 } = this.state
    
    return (
        <View style={styles.container}>
    
            {/* <h1> Temperature Converter</h1> */}
    
            <TextInput
            value={this.state.celsius}
            onChangeText={ (celsius) => this.setState({ celsius })}
            placeholder={'Celsius Here'}
            style={styles.input}
            />
            <Text style={styles.input}> {fahrenheit} </Text>
    
            <Button onPress = { () => { this.updateState()}} title="Convert Celsius to Fahrenheit" />
    
            <Text>{"\n"}</Text>
    
            <TextInput
            value={this.state.fahrenheit1} 
            onChangeText={ (fahrenheit1) => this.setState({fahrenheit1})}
            placeholder={'Fahrenheit Here'}
            style={styles.input}
            />
            <Text style={styles.input}> {celsius1} </Text>
    
            <Button onPress = { () => {this.updateState1()}} title="Convert Fahrenheit to celsius" />
    
          </View>
    )
    }
    }
    

    【讨论】:

    • 谢谢!好的,我让每个按钮都能正常工作。现在,当我在正确的文本输入中转换它时,我需要它不要在那里更改,而是在 中更改,而文本输入要么变为 0,要么保持不变。再次 tyvm 为您提供帮助。
    • 嗯,你刚刚发布的那个对我来说不能正常工作。摄氏显示在华氏文本输入中
    • 现在它可以工作了,我忘了在第二个输入中将值 fahrenheit 更改为 fahrenheit1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    相关资源
    最近更新 更多