javascript - React Native 中的温度计算器
问题描述
我正在尝试开发一个基本的温度计算,但我有点卡住了。但是,我已经让它有点工作了,每当单击一个按钮时,它们最终都会显示结果(其中一个错误)和一个正确。此外,文本和文本输入同时更改。请帮忙!
谢谢,
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>
)
}
}
解决方案
您遇到问题是因为
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>
)
}
}
推荐阅读
- java - 如何在 Android 中通过 MediaStore API 检索和打开保存到下载的 PDF 文件?
- python - 使用 Apriori 算法没有输出
- git - IntelliJ 2020.3 旧版 Git 本地更改视图
- php - 如何获得无税 WooCommerce 订单的总销售额?
- c++ - 使用命名空间 C++ 的未定义引用
- entity-framework - 如何在两端使用 FK 在 EF Core 中配置一对一关系
- c# - 在另一个表达式中使用保存的表达式
- c++ - 为什么 const int 需要 extern 而 const char* 不需要
- javascript - 无法在页面加载事件(纯 JS)上将焦点设置为输入文本字段
- c# - 无法让 ASP.NET Web api 使用未指定的内容类型