๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ReactNative

[React Native] REALM Error: Accessing object which has been invalidated or deleted

by pocket.dev 2024. 9. 14.
๋ฐ˜์‘ํ˜•

Error: Accessing object which has been invalidated or deleted ์—๋Ÿฌ ๋ฐœ์ƒ ํ™”๋ฉด

 

๐Ÿ“Œ ์ƒํ™ฉ

ํ™˜๊ฒฝ) @react-navigation/native - goBack() ์‚ฌ์šฉ, realm.delete() ์‚ฌ์šฉ

 

A ํ™”๋ฉด: ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์„ ๋ณด์—ฌ์คŒ.

B ํ™”๋ฉด: ๊ฐ ๋ฐ์ดํ„ฐ ์ƒ์„ธ ๋‚ด์šฉ์„ ๋ณด์—ฌ์คŒ.

Aํ™”๋ฉด์—์„œ ๋ฐ์ดํ„ฐ ์„ ํƒ ํ›„ Bํ™”๋ฉด ์ง„์ž…. Bํ™”๋ฉด์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด Aํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ.

์ด ๋•Œ, Accessing object which has been invalidated or deleted ์—๋Ÿฌ ๋ฐœ์ƒ.

 

๐Ÿ› ์›์ธ

Realm ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ ํ›„์—๋„ ์•ฑ์—์„œ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ.

 

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 

Realm ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ ํ›„์—๋Š” ์•ฑ์—์„œ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ด์•ผํ•จ.

Object.assign({}, realmObject)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ๋ฆฌ์ŠคํŠธ์— ๋ณต์‚ฌ๋œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•จ.

const realm = useRealm();
const notes = realm.objects('Note');

// ์ˆ˜์ • ์ „
const noteList = Array.from(notes);
setNoteList(noteList);

// ์ˆ˜์ • ํ›„
const noteList = Array.from(notes);
const copiedNotes = noteList.map((note) => Object.assign({}, note));
setNoteList(copiedNotes);

 

๋ฐ˜์‘ํ˜•
Buy Me A Coffee