react-native - Firestore 功能运行但并不总是更新
问题描述
我正在将 React-Native 与 Firestore 一起使用。我运行一个函数来更新 firestore 数据库,但它并不总是更新。有时我必须按两次按钮。
const markAsCompleted = async (id, isCompleted) => {
console.log(id);
await todoRef
.doc(id)
.update({
isComplete: isCompleted,
})
.then(() => {
console.log("mark As Completed Updated!");
});
};
render(){
return(
<View>
<Button onPress={()=> this.markAsCompleted('123', true)}
</View>
)
}
解决方案
您的 React 组件按钮缺少结束标记,并且函数调用 markAsCompleted 不合适,因为它有一些 es6 语法错误。
我对您的代码进行了一些更改,看看是否可行。
import React,{Component} from “react”;
import {Button} from “ native-base”;
import {View} from “react-native”;
import firestore from “@react-native-firebase/firestore”;
export default class App extends Component{
async markAsCompleted = (id, isCompleted) => {
console.log(id);
await firestore.collection(“collectionName”)
.doc(id)
.update({ isComplete: isCompleted, })
.then(() => {
console.log("mark As Completed Updated!");
});
};
render(){
return(
<View>
<Button onPress={()=> {this.markAsCompleted('123', true)} }>
</Button>
</View>
) }
}
另请确保您已将 Firestore 规则设置为接受更新事务。
使用此公共文档获取: Firestore 集合中的实时更新。
您可以使用 onSnapshot() 方法收听文档。使用您提供的回调的初始调用会立即使用单个文档的当前内容创建文档快照。然后,每次内容更改时,另一个调用会更新文档快照。
此外,在函数调用中添加回调侦听器可以帮助您获得成功或错误响应。
推荐阅读
- python - 使用带有插入符号的 rpy2 尝试分类而不是回归
- arrays - 将数组添加到 for 循环
- javascript - 如何删除客户端事件侦听器?
- c++ - 程序完成时强制停止 MP3 文件播放
- c# - Newtonsoft JArray - 从节点指定的数组中选择多个值
- windows - ghc 找不到我使用 cabal new-install --lib 构建和安装的库
- python - 验证用户输入中的所有字符都是预先批准的字符列表的一部分
- php - 如何在刀片(Laravel)的前一天之前检查第二天是否可用
- string - Ocaml String.sub:如何获取所有字符直到字符串结束
- identityserver4 - Identity Server 4 和 BlazorWA X-Frame-Options