我有以下快餐设置(请使用Android版本):
https://snack.expo.io/@sj458147/stackoverflow-unable-to-call-method
单击转到第2步时-我得到的undefined不是对象,则应通过调用方法moveToPage
如果用户要滑动模态视图,它将移动到下一个视图。如何停止这种交互(仅当用户单击按钮时才滚动视图,而不能通过滑动)。
Expo给此消息this.refs已过时,我将如何更新此代码?
答案 0 :(得分:2)
您需要在构造函数中使用React.createRef()。并在您的组件中使用此参考。在go()函数中,要实现moveToPage(2),您需要像下面这样使用当前的引用;
class ShowModal2 extends Component {
constructor(props){
super(props);
this.MyScrollView = React.createRef();
}
go = () => {
this.MyScrollView.current.moveToPage(2);
};
render() {
return (
<Modal
style={styles.modal}
isVisible={true}
onBackdropPress={this.hideModal}>
<MyScrollView ref={this.MyScrollView}>
......
并将相同的方法应用于其他课程
class MyScrollView extends Component {
constructor() {
super();
this.state = { page: '' }
this.scrollView = React.createRef();
}
moveToPage(page) {
this.scrollView.current.scrollTo({ x: ((page - 1) * device_width), y: 0,
animated: true });
alert(page);
}
render() {
return (
<View style={styles.container}>
<ScrollView ref={this.scrollView} showsHorizontalScrollIndicator={false} horizontal={true} pagingEnabled={true}>
......
并请从链接中进行检查-> https://snack.expo.io/@sdkcy/stackoverflow-unable-to-call-method