簡體   English   中英

React Native Android:彈跳滾動視圖

[英]React Native Android: Bouncing Scroll View

我知道 Android 上的常規滾動視圖不會反彈,但我想要這個功能。 我正在嘗試使用包SpringScrollView ,但是當我用<SpringScrollView>替換我的<ScrollView>組件時,我收到錯誤

Requiring unknown module "94". If you are sure the module exists, try restarting Metro. You may also want to run 'yarn' or 'npm install'.

我真的不知道 Metro 是什么,但如果我只是關閉應用程序,然后使用yarn install重新運行它,我會得到同樣的錯誤


更新

當我到達 MainApplication.java 的部分時,我遇到了文檔中安裝說明問題。 該文檔指定將我的 getPackages() 函數修改為

@Override
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
      new MainReactPackage(),
      new SpringScrollViewPackage()
  );
}

我的 MainApplication.java 的 getPackages 函數看起來有點不同

    @Override
    protected List<ReactPackage> getPackages() {
      List<ReactPackage> packages = new PackageList(this).getPackages();
      packages.add(
        new ModuleRegistryAdapter(mModuleRegistryProvider)
      );
      return packages;
    }

所以我試圖將其修改為

    @Override
    protected List<ReactPackage> getPackages() {
      List<ReactPackage> packages = new PackageList(this).getPackages();
      packages.add(
        new ModuleRegistryAdapter(mModuleRegistryProvider)
      );
      packages.add(new SpringScrollViewPackage());
      return packages;
    }

但是當我這樣做時,我在構建時收到此錯誤

error: cannot find symbol
      packages.add(new SpringScrollViewPackage());
                       ^
  symbol: class SpringScrollViewPackage
1 error

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

我也嘗試安裝一個 0.* 版本,因為看起來花哨的說明只適用於 2.* 版本,但是當我這樣做並使用 SpringScrollView 時,我得到一個錯誤

"You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports"

您發布的函數getPackages上方

 @Override
    protected List<ReactPackage> getPackages() {
      List<ReactPackage> packages = new PackageList(this).getPackages();
      packages.add(
        new ModuleRegistryAdapter(mModuleRegistryProvider)
      );
      return packages;
 }

您可能會看到創建了一個新對象ReactModuleRegistryProvider 嘗試在那里添加你的包。

private final ReactModuleRegistryProvider mModuleRegistryProvider = new ReactModuleRegistryProvider(Arrays.<Package>asList(
    new SpringScrollViewPackage(),  // add this line there
), Arrays.<SingletonModule>asList());```

MetroBundler 為您捆綁了該應用程序,以便您可以運行/調試它。 可能是周圍有一些舊的緩存文件或過時的文件。

大多數情況下,要說出地鐵究竟是什么問題並不容易,但在我看來,以下步驟經常會有所幫助:

(請注意,這是針對 Linux 用戶的...如果您使用 Windows,請將里面的單個命令替換為您的 os-command)

將這些行添加到您的package.json - scripts-Section 以便能夠隨時運行它:

"kill_MetroBundler": "lsof -i :8081 | grep node | awk '{print $2}'| head -1 | xargs kill",
"clean-start": "rm -rf ./node_modules && yarn install && watchman watch-del-all && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf $TMPDIR/metro-bundler-cache-* && rm -rf $TMPDIR/react-*",

所以我建議首先搜索並殺死所有的 MetroBundler 進程。 我上面的命令使用lsof搜索在端口 8081 上運行的服務,在通過管道傳輸到某些進程(以獲得所需的程序名稱)后,它執行了一個kill程序,以強制關閉進程。

之后,您還應該運行clean-start刪除您的node_module目錄,重新安裝模塊,殺死所有守望者和查查捆綁程序和打包程序進程。

有時,在非常困難的情況下,這也行不通。 在這里我發現,可能需要為 Android 重新創建捆綁文件:

"RN_Bundle": "react-native bundle --platform android --dev false --reset-cache --entry-file index.js --bundle-output android/build/generated/assets/react/release/index.android.bundle --assets-dest android/build/generated/res/react/release",

如果你使用這個命令,我推薦這個順序:

  1. kill_MetroBundler
  2. 干凈的開始
  3. RN_Bundle

可能是,您必須根據自己的需要稍微調整命令,但對我而言,那些命令至少在大多數情況下為我完成了這項工作。

祝你好運

您尚未將該庫“鏈接”到 android 項目。 與真正的 JVM 庫不同,它們由依賴管理器自動添加到項目路徑中,react-native“庫”將整個 android 子項目復制粘貼到 node_modules 中,然后需要將其添加到 android 應用程序的 settings.gradle 和 build.gradle 中。 在你的項目中,應該有一個 android/settings.gradle,你需要在其中添加類似

include ':SpringScrollView'
project(':SpringScrollView').projectDir = new File(rootProject.projectDir, '../src/base/SpringScrollView/android')

然后,在 android/app/build.gradle 文件中,類似於:

implementation project(':SpringScrollView')

然后“庫”將被添加到路徑中,類將在那里(這假設 SpringScrollView 是 node_modules 中庫的文件夾名稱)。

祝你好運和耐心。 RN 需要它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM