私のプロジェクトでは、リアクションネイティブナビゲーションパッケージとRealmを使用しています。私のアプリにNotebook
という名前の領域オブジェクトがあり、それには別の領域オブジェクトであるVerse
オブジェクトのリストが含まれています。新しいRealmオブジェクトを作成した後のナビゲーションでエラーが発生しました
アプリの構造は非常に簡単です。最初のページにはNotebook
のリストが表示され、1つを選択すると、Verse
のリストである2番目の画面に切り替わります。ここで
は詩リストにノートブックリストからナビゲートするために私のコードです:
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
に追加したときに発生します。ここでは新しいVerse
を作成するために、2番目の画面に住んでいる私のコードは次のとおりです。
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
秒のリストに行くに戻るボタンを選択した場合、この時点で、私はこのエラーを取得する:
Attempting to change value of a readonly property.
Exception in native call java.lang.RuntimeException: Error calling RCTEventEmitter.receiveTouches
at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
at android.os.Looper.loop(Looper.java:154)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:199)
at java.lang.Thread.run(Thread.java:761)
Caused by: com.facebook.jni.CppException: Exception calling object as function: TypeError: Attempting to change value of a readonly property.
at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
at android.os.Looper.loop(Looper.java:154)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:199)
at java.lang.Thread.run(Thread.java:761)
私はこれを作るために行うことができます物事のカップルがあります。問題は消えてしまうが、どちらも私のアプリケーションを役に立たなくする。新しい画面に移動したときにpassProps
から{notebook: notebook}
を削除することはできますが、Notebook
が選択されていないため、Verse
リスト画面に何も表示されません)。または、新しく作成したVerse
を選択したNotebook
に追加することはできません(データは追加できません)。
これらの2つの変更は2つの異なるコンポーネント(Realmとreact-native-navigation)にあるため、どのコンポーネントが問題の原因かはわかりません。
私は '_.cloneDeep'を使用しませんでしたが、ノートブックの主キーと検索したレルムにそのIDを渡しました。すべてが素晴らしい今働いています。ありがとう! – beyerss