`JSThread` to `JSThread`, `UIThread` to `UIThread`.
First you have to follow installation instructions of Reanimated v2 and react-native-gesture-handler
yarn add react-native-awesome-slider
import { useSharedValue } from 'react-native-reanimated';
import { Slider } from 'react-native-awesome-slider';
export const Example = () => {
const progress = useSharedValue(30);
const min = useSharedValue(0);
const max = useSharedValue(100);
return (
<Slider
style={styles.container}
progress={progress}
minimumValue={min}
maximumValue={max}
/>
);
};
- Pure javascript slider implementations usually rely on
react-native
's gesture events which may inadvertently trigger 'swipe to go back' events as you pan the slider. β - Native sliders rely on state updates, which can cause performance issues. β
react-native-awesome-slider
relies on reanimated
's ShareValue ability to run code directly in the UIThread
to enhance performance, and react-native-gesture-handle
won't interfere with your swiping gestures. β¨
- 100% written inΒ
TypeScript
. - 100% built uponΒ
react-native-reanimated
andreact-native-gusture-handle
. - Supports Tap & Pan triggering.
- and more...
- Add RTL support
- Optimize arrows
- Rewrite using
react-native-gesture-handle
v2 - ...
TheΒ <Slider/>
Β component has the following configuration properties:
Name | Type | Description | Required | Default Value |
---|---|---|---|---|
minimumTrackTintColor | string | color applied to track from the min position up to the thumb position | β | rgba(61, 219, 209, 1) |
maximumTrackTintColor | string | color applied to track from the thumb position up to the maximum position | β | rgba(195, 197, 199, 1) |
cacheTrackTintColor | string | cache track tint color | β | rgba(39, 41, 46, 1) |
style | ViewStyle | β | ||
borderColor | string | Color of the border of the slider, also you can use containerStyle . | β | transparent |
bubble | (number) => string | Get the current value of the slider as you slide it, and returns a string to be used inside the bubble. | β | (number) => string |
progress | Animated.SharedValue | Current value of the slider | β | 0 |
cache | Animated.SharedValue | Cache value of the slider | β | 0 |
minimumValue | Animated.SharedValue | An Animated.SharedValue from react-native-reanimated library which is the minimum value of the slider. | β | undefined |
maximumValue | Animated.SharedValue | An Animated.SharedValue from react-native-reanimated library which is the maximum value of the slider. | β | undefined |
onSlidingStart | () => void | Callback called when the sliding interaction starts | β | undefined |
onValueChange | (number) => void | Callback called when the slider value changes | β | undefined |
onSlidingComplete | (number) => void | Callback called when the sliding interaction stops. The updated slider value will be passed as argument | β | undefined |
renderBubble | () => React.ReactNode | A custom bubble component that will be rendered while sliding. | β | See the component |
setBubbleText | (string) => void | This function will be called while sliding and can be used to update the text in a custom bubble component. | β | current slider value |
bubbleTranslateY | number | Value to pass to the container of the bubble as translateY | β | 7 |
renderThumbImage | () => React.ReactNode | Render custom thumb image. If you need to customize thumb, you also need to set the thumb width | β | ReactNode |
thumbWidth | number | Thumb elements width | β | 15 |
disable | boolean | Disable user interaction with the slider | β | false |
disableMinTrackTintColor | string | Disable slider color. Defaults to minimumTrackTintColor |
β | rgba(61, 219, 209, 1) |
disableTapEvent | boolean | Enable tap event change value. Defaults to true |
β | true |
bubbleMaxWidth | number | The maximum width of the bubble component | β | 100 |
bubbleTextStyle | TextStyle | Bubble text style | β | |
bubbleContainerStyle | ViewStyle | Bubble container text style | β | |
bubbleBackgroundColor | string | Bubble background color | β | rgba(61, 219, 209, 1) |
isScrubbing | Animated.SharedValue | callback slider is scrubbing status | β | undefined |
onTap | () => void | A callback for when the slider is tapped.(Useful for video-player scrubbing.) | β | undefined |
thumbScaleValue | Animated.SharedValue | Control thumbβs transform-scale animation. | β | undefined |
sliderHeight | number | The height of the slider component | β | 30 |
containerStyle | ViewStyle | styles to be applied to the slider container component | β | { width: '100%', height: 5, borderRadius: 2, borderColor: borderColor, overflow: 'hidden', borderWidth: 1, backgroundColor: maximumTrackTintColor, }, |
panHitSlop | object | pan gesture hit slop | β | { top: 8, left: 0, bottom: 8, right: 0,} |