私のプロジェクトでは、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}
ません)。または、新しく作成したものを選択したものに追加できません(ただし、データを追加できません)。passProps
Verse
Notebook
Verse
Notebook
これら 2 つの変更は 2 つの異なるコンポーネント (Realm と react-native-navigation) にあるため、どちらのコンポーネントが問題の原因であるかはわかりません。