您的当前位置:首页RN错误之undefined is not a function

RN错误之undefined is not a function

2024-12-13 来源:哗拓教育

写项目的时候碰到this对象错误,具体报错为

error

解决办法.
原因是this对象和state的this对象不是同一个所致。将其修改为同一个就可以了

constructor(props){
        super(props);
        this.state={
            indexPage:0,
        };
    }
    render() {
        return (
            <View style={styles.container}>
                {/*上面的滚动部分*/}
                <ScrollView
                    pagingEnabled={true}
                    showsHorizontalScrollIndicator={false}
                    horizontal={true}
                    onMomentumScrollEnd = {this.onScrollAnimationEnd}
                >
               
                 {this.renderTopScrollItem()}   
                </ScrollView>

              
            </View>
        );
    }
    //当滚动动画结束之后调用此回调
    //如果出于某些原因想使用浏览器原生事件,可以使用 nativeEvent 属性获取
    //contentOffset 用来手动设置初始的滚动坐标
    onScrollAnimationEnd(e){
        var currPage = Math.floor(e.nativeEvent.contentOffset.x/width);

          this.setState({
            indexPage:currPage
        });

    }

修改

 constructor(props){
        super(props);
         self = this,// self = this;//为了防止this.setState的this对象不一致
        self.state={
            indexPage:0,
        };
    }
    render() {
        return (
            <View style={styles.container}>
                {/*上面的滚动部分*/}
                <ScrollView
                    pagingEnabled={true}
                    showsHorizontalScrollIndicator={false}
                    horizontal={true}
                    onMomentumScrollEnd = {this.onScrollAnimationEnd}
                >
               
                 {this.renderTopScrollItem()}   
                </ScrollView>
             </View>
        );
    }
    //当滚动动画结束之后调用此回调
    //如果出于某些原因想使用浏览器原生事件,可以使用 nativeEvent 属性获取
    //contentOffset 用来手动设置初始的滚动坐标
    onScrollAnimationEnd(e){
        var currPage = Math.floor(e.nativeEvent.contentOffset.x/width);

          self.setState({//和state的this一致
            indexPage:currPage
        });

    }
显示全文