1

私のプロジェクトでは、react-native-navigation パッケージと Realm を使用しています。私のアプリには、別のレルム オブジェクトであるオブジェクトNotebookのリストを含むと呼ばれるレルム オブジェクトがあります。Verse

アプリの構造は非常にシンプルで、最初のページに のリストが表示Notebookされ、いずれかを選択すると、アプリは のリストである 2 番目の画面に遷移しますVerse

ノートブックリストから詩リストに移動するコードは次のとおりです。

this.props.navigator.push({
  screen: 'com.beyersapps.biblebinderrn.verselist',
  title: notebook.name,
  passProps: {notebook: notebook},
  animated: true,
  animationType: 'fade',
  backButtonTitle: undefined,
  backButtonHidden: false
})

このナビゲーションは問題なく機能し、2 つの画面間を行き来できます。私の問題は、新しいを作成してVerseに追加するときに発生しますNotebook。新しい を作成するために2番目の画面にある私のコードは次のVerseとおりです。

realm.write(() => {
  let newVerse = realm.create('Verse', {
    reference: 'Genesis 1:1',
    favorite: false,
    memorized: false,
    scripture: 'My favorite verse'
  });

  if (this.notebook != null) {
    this.notebook.verses.push(newVerse);
  }
});

これが私の問題の始まりです。この時点で、戻るボタンを選択して のリストに戻りNotebook、ノートブックを再度選択すると、次のエラーが発生します。

読み取り専用プロパティの値を変更しようとしています。

ネイティブ呼び出しの例外 java.lang.RuntimeException: RCTEventEmitter.receiveTouches の呼び出し中にエラーが発生しました

com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
で android.os.Handler.handleCallback(Handler.java:751)
で android.os.Handler.dispatchMessage(Handler.java:95)
で com .facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
で android.os.Looper.loop(Looper.java:154)
で com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(
java.lang.Thread.run(Thread.java:761) のMessageQueueThreadImpl.java:199)
原因: com.facebook.jni.CppException: オブジェクトを関数として呼び出している例外: TypeError: 読み取り専用プロパティの値を変更しようとしています。
com.facebook.react.bridge.queue.NativeRunnable.run(ネイティブメソッド)で 
android.os.Handler.handleCallback(Handler.java:751) 
で android.os.Handler.dispatchMessage(Handler.java:95) 
で com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31 ) ) 
android.os.Looper.loop(Looper.java:154) 
で com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:199) 
で java.lang.Thread.run(Thread.java ) :761) 

この問題を解決するためにできることがいくつかありますが、どちらも私のアプリを役に立たなくしてしまいます。問題の特定に役立つ可能性があるため、新しい画面に移動するときに削除できます(ただし、どれが選択されているかわからないため、リスト画面には何も表示され{notebook: notebook}ません)。または、新しく作成したものを選択したものに追加できません(ただし、データを追加できません)。passPropsVerseNotebookVerseNotebook

これら 2 つの変更は 2 つの異なるコンポーネント (Realm と react-native-navigation) にあるため、どちらのコンポーネントが問題の原因であるかはわかりません。

4

1 に答える 1