您可以通过简单地不将value
props传递给<Slider />
. 所以,像这样:
<!-- language: lang-js -->
<Slider
// value={this.state.someValue} // commented out :D
maximumValue={this.state.sliderMaximumValue}
minimumValue={0}
onValueChange={(someValue) => this.setState({someValue})}
/>
而已!:D
但!如果您需要不断显示滑块的变化值,(根据我的需要)您可以这样做:
在您的组件中为一个实际状态创建 2 个状态。一个用于显示,一个作为要传递给的实际值<Slider />
(在这种情况下,您不需要注释掉value
prop)。
我有一个组件,我必须在其中显示不断变化的滑块值,而不会使滑块滞后。所以我这样做了:
const [displayTotalQuantity, setDisplayTotalQuantity] = useState(FUEL_AMOUNT_MINIMUM);
const [totalQuantity, setTotalQuantity] = useState(FUEL_AMOUNT_MINIMUM);
<Text> {displayTotalQuantity} </Text>
<Slider
style={slider.baseStyles}
step={STEP}
value={totalQuantity}
minimumValue={MINIMUM}
maximumValue={MAXIMUM}
minimumTrackTintColor={mainColors.irisBlue}
maximumTrackTintColor={mainColors.sliderMaxTintGray}
thumbTintColor={mainColors.irisBlue}
onSlidingComplete={value => setTotalQuantity(value)}
onValueChange={value => setDisplayTotalQuantity(value)}
/>
所以,你需要通过value
prop传递实际状态,但只更新它onSlidingComplete
。另一方面,display
在每次更改时更新状态,即将onValueChange
其显示在某个文本组件中。
我希望我说清楚了。如果没有,请询问,我会详细说明。:)