当我们刚刚通过 StackNavigator 导航到当前屏幕时,是否可以告诉 ScrollView 滚动到特定位置?
我有两个屏幕;菜单和项目。菜单是一个按钮列表,每个项目一个。Items 屏幕包含一个使用 ScrollView 构建的 Carousel,其中包含每个 Item 的图片和详细描述。
当我单击菜单屏幕中的按钮时,我想导航到项目屏幕,并自动滚动到按钮所代表的项目。
我读到您可以在使用 StackNavigator 时像这样传递参数:但我不知道如何在我的项目屏幕中读出该参数。
navigate('Items', { id: '1' })
那么这在 React Native 中是可能的吗?我该怎么做呢?或者也许我使用了错误的导航器?
这是我的两个屏幕的简化版本:
应用程序.js:
const SimpleApp = StackNavigator({
Menu: { screen: MenuScreen},
Items: { screen: ItemScreen }
}
);
export default class App extends React.Component {
render() {
return <SimpleApp />;
}
}
菜单.js
export default class Menu extends React.Component {
constructor(props){
super(props)
this.seeDetail = this.seeDetail.bind(this)
}
seeDetail(){
const { navigate } = this.props.navigation;
navigate('Items')
}
render(){
<Button onPress={this.seeDetail} title='1'/>
<Button onPress={this.seeDetail} title='2'/>
}
}
项目.js
export default class Items extends React.Component {
render(){
let scrollItems = [] //Somecode that generates and array of items
return (
<View>
<View style={styles.scrollViewContainer}>
<ScrollView
horizontal
pagingEnabled
ref={(ref) => this.myScroll = ref}>
{scrollItems}
</ScrollView>
</View>
</View>
)
}
}
PS我目前专门针对Android,但理想情况下可能有一个跨平台的解决方案。