简体   繁体   English

反应本机ViewPagerAndroid错误

[英]React Native ViewPagerAndroid error

Has anyone been successful in using the ViewPagerAndroid component? 有没有人成功使用ViewPagerAndroid组件?

EDIT 编辑

react-native 0.13.0-rc 反应本机0.13.0-rc

The error I'm getting is: No ViewManager defined for class AndroidViewPager 我得到的错误是: No ViewManager defined for class AndroidViewPager



Original post below 下面的原始帖子

react-native 1.2.0 本机1.2.0

I keep getting this error: 我不断收到此错误:

Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined.

I tried their code exatly as in the UIExplorer examples, ViewPagerAndroidExample.android.js 我像UIExplorer示例ViewPagerAndroidExample.android.js中那样巧妙地尝试了他们的代码

  render: function() {
    var pages = [];
    for (var i = 0; i < PAGES; i++) {
      var pageStyle = {
        backgroundColor: BGCOLOR[i % BGCOLOR.length],
        alignItems: 'center',
        padding: 20,
      };
      pages.push(
        <View key={i} style={pageStyle} collapsable={false}>
          <Image
            style={styles.image}
            source={{uri: IMAGE_URIS[i % BGCOLOR.length]}}
          />
          <LikeCount />
       </View>
      );
    }
    var page = this.state.page;
    return (
      <View style={styles.container}>
        <ViewPagerAndroid
          style={styles.viewPager}
          initialPage={0}
          onPageScroll={this.onPageScroll}
          onPageSelected={this.onPageSelected}
          ref={viewPager => { this.viewPager = viewPager; }}>
          {pages}
        </ViewPagerAndroid>
        <View style={styles.buttons}>
          <Button text="Start" enabled={page > 0} onPress={() => this.go(0)}/>
          <Button text="Prev" enabled={page > 0} onPress={() => this.move(-1)}/>
          <Text style={styles.buttonText}>Page {page + 1} / {PAGES}</Text>
          <ProgressBar size={100} progress={this.state.progress}/>
          <Button text="Next" enabled={page < PAGES - 1} onPress={() => this.move(1)}/>
          <Button text="Last" enabled={page < PAGES - 1} onPress={() => this.go(PAGES - 1)}/>
        </View>
      </View>
    );
  },

I had the exact same issue, and coudn´t fix it. 我遇到了完全相同的问题,因此无法解决。 But maybe you want to use the react-native-viewpager, which works perfectly for iOS and Android. 但也许您想使用react-native-viewpager,它非常适合iOS和Android。 You can get it here : 你可以在这里得到它:

It´s really easy to work with... The following works in my Android and iOS App: 使用起来真的很容易...以下内容可在我的Android和iOS应用程序中使用:

1. Define your Pages/Views 1.定义页面/视图

    var VIEWS = ['View 1','View 2','View 3'];

2. Then set the dataSource in your getInitialState function: 2.然后在您的getInitialState函数中设置dataSource:

    getInitialState: function () {
        var dataSource = new ViewPager.DataSource ({
            pageHasChanged: ( p1, p2 ) => p1 !== p2,
        });

        return {
            dataSource: dataSource.cloneWithPages(VIEWS),
        };
    },

3. In your render-method: 3.在您的渲染方法中:

     <ViewPager
         style={this.props.style}
         dataSource={this.state.dataSource}
         renderPage={this._renderPage}
         onChangePage={this._onChangePage}
         isLoop={true}
         autoPlay={false}/>

4. And then render your Pages: 4.然后呈现您的页面:

     _renderPage: function ( data:Object, pageID:number ) {
        return (
            <View style={styles.page}>
                <Text style={styles.text}>{data + ' pageID: ' + pageID}</Text>
            </View>
        );
    },

    _onChangePage: function ( page:number ) {
        notifyMessage ('Current page: ' + page);
    },

And don´t forget to require the node module: 并且不要忘记需要节点模块:

var ViewPager = require ('react-native-viewpager');

Let me know if you found out how to fix the ViewPagerAndroid... 让我知道您是否找到了解决ViewPagerAndroid的方法...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM