gpt4 book ai didi

javascript - ScrollView 以编程方式滚动按钮按下 react native

转载 作者:行者123 更新时间:2023-12-04 23:43:38 24 4
gpt4 key购买 nike

因此,我使用 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>
);
}

最佳答案

您可以分配 ref到您的 ScrollView。该 ref 包含一个名为 scrollTo() 的函数.
首先定义引用:const scrollViewRef = useRef(null);(https://reactjs.org/docs/hooks-reference.html#useref)
接下来将 ref 添加到您的 ScrollView:

<ScrollView
ref={scrollViewRef}
>
</ScrollView>
现在我们需要做的就是将 ScrollView 滚动到所需的位置。有多种方法可以做到这一点。我喜欢跟踪页面索引/编号来计算下一个滚动位置。您也可以使用 FlatList。
所以你可以在你的 TouchableOpacity 上做这样的事情约 Next :
const toNextPage = () => {
screenIndex += 1;
scrollViewRef.current?.scrollTo({x: window.width * screenIndex, animated: true});
};

onPress={toNextPage}
https://reactnative.dev/docs/scrollview#scrollto更多信息 scrollTo()

关于javascript - ScrollView 以编程方式滚动按钮按下 react native ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65225214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com