无法从React Native中的另一个类调用方法

时间:2019-01-28 14:56:37

标签: react-native

我有以下快餐设置(请使用Android版本):

https://snack.expo.io/@sj458147/stackoverflow-unable-to-call-method

  1. 单击转到第2步时-我得到的undefined不是对象,则应通过调用方法moveToPage

  2. 来滚动视图
  3. 如果用户要滑动模态视图,它将移动到下一个视图。如何停止这种交互(仅当用户单击按钮时才滚动视图,而不能通过滑动)。

  4. Expo给此消息this.refs已过时,我将如何更新此代码?

1 个答案:

答案 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