如何使用 react-native 中的滑块将公里值转换为英里?

How to convert kilometers value into miles using slider in react-native?

如何在 react-native 中使用滑块将公里值转换为英里?

我正在使用导入滑块的这一依赖项。

import Slider from "react-native-slider";

我想要这样的输出。 当我点击 km 时,它会以公里为单位输出,当我点击 ml 时,它会以英里为单位输出。

export default class AdvanceFilter extends Component {
render(){
constructor(props) {
        super(props);
        this.state={
        distance: 100,
        minDistance: 0,
        maxDistance: 300,
        };}
return(
    <View style={styles.sliderdistance1}>
                        <Text style={styles.texthead}>Distance</Text>
                        <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
                            <Text style={styles.txtslider}>0 -</Text>
                            <Text style={styles.txtslider}>{this.state.distance}</Text>
                            <TouchableOpacity style={styles.txtsliderkm}><Text style={{ color: 'white', }}>Km</Text></TouchableOpacity>
                            <TouchableOpacity style={styles.txtsliderml}><Text style={{ color: 'black', }}>ml</Text></TouchableOpacity>

                        </View>
                    </View>
                    <View style={styles.sliderdistance2}>
                        <Slider
                            style={{ width: 370, marginLeft: 10, padding: 3, marginRight: 10 }}
                            step={1}
                            minimumValue={this.state.minDistance}
                            maximumValue={this.state.maxDistance}
                            value={this.state.distance}
                            onValueChange={val => this.setState({ distance: val })}
                            thumbTintColor='#FE5F63'
                            maximumTrackTintColor='gray'
                            minimumTrackTintColor='#FE5F63'

                        />
                    </View>
);
}
}
}

如果我没理解错的话,你说的是两件不同的事情。

如果要将公里换算为英里,则需要对此应用数学公式:KM_TO_M = KM * 0.621371 和 M_TO_KM = M * 1.609344。

要更改滑块,您可能需要更改您所在州的值。因此,您需要设置从 KM 变为 M 的 TouchableOpacity(或任何按钮)的操作,例如:

if (<going to miles mode>) {
  this.setState({
    distance = this.state.distance * 0.621371,
    minDistance: 0,
    maxDistance: 186, //aprox result of 300 * 0.621371
  });
} else if (<going to kilometers mode>) {
  this.setState({
    distance = this.state.distance * 1.609344,
    minDistance: 0,
    maxDistance: 300,
  })
}

记得根据需要应用舍入

您可以创建一个将公里转换为英里和 return 英里的函数

const convertKmToM = (values) => {
  // you can make change as per requirement 
  var realMiles = ( values * 0.621371 );
  var Miles = Math.floor(realMiles);
  return Miles;
}

Use this function like 

<Text>({convertKmToM(YOUR_VALUE_IN_KM)}))</Text>