Oja*_*jay 12 javascript android ios react-native
因此,我使用 ScrollView 在 React Native 中手动创建了一个入门屏幕,并且还添加了一个标记为 next 的按钮,以使隐藏屏幕能够移入屏幕上。现在我的挑战是如何在按下按钮时以编程方式使 ScrollView 滚动。下面是我尝试过的示例功能组件,但我不知道如何实现按钮按下滚动
export default function Onbaording({ navigation }) {
const [sliderState, setSliderState] = React.useState({ currentPage: 0 });
const { width, height } = Dimensions.get("window");
const setSliderPage = (event) => {
const { currentPage } = sliderState;
const { x } = event.nativeEvent.contentOffset;
const indexOfNextScreen = Math.floor(x / width);
if (indexOfNextScreen !== currentPage) {
setSliderState({
...sliderState,
currentPage: indexOfNextScreen,
});
}
};
const { currentPage: pageIndex } = sliderState;
return (
<View style={Styles.container}>
<SafeAreaView style={{ flex: 4 }}>
<ScrollView
horizontal={true}
scrollEventThrottle={16}
pagingEnabled={true}
showsHorizontalScrollIndicator={false}
snapToStart={true}
onScroll={(event: any) => {
setSliderPage(event);
}}
>
<View style={{ width, height, paddingHorizontal: 16 }}>
<View style={Styles.Svg}>
<WelcomeSvg1 />
</View>
<Text style={Styles.text}>Onboarding</Text>
<Text>
Done with React Native.
</Text>
</View>
<View style={{ width, paddingHorizontal: 16 }}>
<View style={Styles.Svg}>
<WelcomeSvg2 />
</View>
<Text style={Styles.text}>Onboarding</Text>
<Text>
Done with React Native.
</Text>
</View>
</ScrollView>
<View style={Styles.paginationWrapper}>
{Array.from(Array(2).keys()).map((key, index) => (
<View
style={[
Styles.paginationDots,
{
backgroundColor:
pageIndex === index ? "#51668F" : "#EAEAEA",
},
]}
key={index}
/>
))}
</View>
</SafeAreaView>
<View>
<View
style={{ flexDirection: "row", justifyContent: "space-between" }}
>
<TouchableOpacity
onPress={() => {
navigation.navigate("Signin");
}}
>
<Text>Skip</Text>
</TouchableOpacity>
<TouchableOpacity>
<Text>Next</Text>
</TouchableOpacity>
</View>
</View>
</View>
);
}
Run Code Online (Sandbox Code Playgroud)
Kip*_*els 22
您可以将 a 分配ref给您的 ScrollView。该引用包含一个名为 的函数scrollTo()。
首先定义引用const scrollViewRef = useRef(null);
:( https://react.dev/reference/react/useRef#useref )
接下来将引用添加到您的 ScrollView 中:
<ScrollView
ref={scrollViewRef}
>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
现在我们需要做的就是将 ScrollView 滚动到所需的位置。有多种方法可以做到这一点。我喜欢跟踪页面索引/编号来计算下一个滚动位置。您还可以使用 FlatList。
TouchableOpacity所以你可以在你周围做这样的事情Next:
const toNextPage = () => {
screenIndex += 1;
scrollViewRef.current?.scrollTo({x: window.width * screenIndex, animated: true});
};
onPress={toNextPage}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅https://reactnative.dev/docs/scrollview#scrolltoscrollTo()
| 归档时间: |
|
| 查看次数: |
16905 次 |
| 最近记录: |