因此,我使用ScrollView手动创建了一个React Native的引导屏幕,并添加了一个标有“下一步”按钮,以启用隐藏屏幕在屏幕上移动。现在我的挑战是,当按下按钮时,如何以编程方式使我的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>
);
}
screenIndex += 1;
处显示错误。所以我改成了screenIndex = pageIndex + 1;
,这对我起作用了。 - AbhrascreenIndex
是什么类型的值。它可以是状态或共享值。只是要注意一下,某个表示索引的值应该更新。 - Kipnoedels