Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用'崩溃应用程序;访问已失效或删除的类型的对象';错误消息?_Javascript_Reactjs_React Native_Realm - Fatal编程技术网

Javascript 使用'崩溃应用程序;访问已失效或删除的类型的对象';错误消息?

Javascript 使用'崩溃应用程序;访问已失效或删除的类型的对象';错误消息?,javascript,reactjs,react-native,realm,Javascript,Reactjs,React Native,Realm,我正在使用Realm作为我的react原生项目的数据库 当我试图从realmDB中删除对象时,我遇到了一个错误,如“访问XXX类型的对象,该对象已失效或被删除”。 对象被删除,但应用程序显示错误 经过一些研究,我发现isValid()属性可以作为解决方案。但是它是如何与我下面的代码一起工作的?问题背后的真正原因是什么 DBScheme export const deleteNewTemplateScheme = newTemplateObjectId => new Promise((res

我正在使用Realm作为我的react原生项目的数据库

当我试图从realmDB中删除对象时,我遇到了一个错误,如“访问XXX类型的对象,该对象已失效或被删除”。 对象被删除,但应用程序显示错误

经过一些研究,我发现isValid()属性可以作为解决方案。但是它是如何与我下面的代码一起工作的?问题背后的真正原因是什么

DBScheme

export const deleteNewTemplateScheme = newTemplateObjectId => new Promise((resolve, reject) => {
Realm.open(NewTemplateScheme).then(realm => {
    realm.write(() => {
        let deletingNewTemplateObject = realm.objectForPrimaryKey(NEW_TEMPLATE_SCHEMA, newTemplateObjectId);
        realm.delete(deletingNewTemplateObject);
        resolve();
      });
  }).catch((error) => reject(error));;
});
获取

deleteNewTemplateScheme(this.state.content.id).then(()=> {
Alert.alert('Deleted');
}).catch((error) => {
        Alert.alert('Failed to delete todoList: ', error);
      });

最后,我自己找到了解决办法。如果将对象作为道具传递给导航或新组件,则删除此对象(当对象仍在导航堆栈或新组件中时),这将触发此错误

我之前做的是创建一个新组件并将领域对象作为道具传递,现在我做的是在父类本身中创建相同的组件(因此,不需要传递道具)。所以它现在可以正常工作了