javascript - 我可以使用对象的属性名称作为参数吗?
问题描述
我想在我的应用程序中制作最喜欢的模块。我正在使用 React-native 和 Firestore。这是我的代码:
addFavorite() {
getPlaceName().doc(this.selectedPlaceName.id).set({
favorite: {
uid : true
}
}, { merge: true }).then(() => {
console.log('Added')
}).catch((e) => {
console.log('error', e)
})
}
removeFavorite() {
getPlaceName().doc(this.selectedPlaceName.id).set({
favorite: {
uid: false
}
}, { merge: true }).then(() => {
console.log('Removed')
}).catch((e) => {
console.log('error', e)
})
}
我将收藏夹存储为 Firestore 中的地图:
favorite: {
u001: true,
u002: false}
那么有没有办法实现呢?或者你们还有其他想法如何完成这个最喜欢的事情吗?
解决方案
以下使用方括号表示法的代码应该可以工作(如果我正确理解您的问题!):
addFavorite(uid) {
const favoriteObj = {}
favoriteObj[uid] = true;
getPlaceName().doc(this.selectedPlaceName.id).set({
favorite: favoriteObj
}, { merge: true }).then(() => {
console.log('Added')
}).catch((e) => {
console.log('error', e)
})
}
removeFavorite(uid) {
const favoriteObj = {}
favoriteObj[uid] = false;
getPlaceName().doc(this.selectedPlaceName.id).set({
favorite: favoriteObj
}, { merge: true }).then(() => {
console.log('Removed')
}).catch((e) => {
console.log('error', e)
})
}
更新: 由于您的两个函数之间有很多代码是通用的,请注意您可以在一个函数中重新分解您的代码,例如:
setFavorite(uid, isFavorite) {
const favoriteObj = {}
favoriteObj[uid] = isFavorite;
getPlaceName().doc(this.selectedPlaceName.id).set({
favorite: favoriteObj
}, { merge: true }).then(() => {
if (isFavorite) {
console.log('Added')
} else {
console.log('Removed')
}
}).catch((e) => {
console.log('error', e)
})
}
isFavorite
布尔值在哪里。你可以这样称呼它,例如:
setFavorite("u001", true);
或者
setFavorite("u002", false);
推荐阅读
- python - 循环浏览目录中的文件时如何出现此错误?“OSError:[Errno 2] 没有这样的文件或目录”
- javascript - 在 d3.js 中分离节点并避免在树图中重叠
- function - 获取 Z shell 函数中的函数名
- c# - 执行的序列 ActionFilter 属性是什么?
- kaitai-struct - Kaitai 结构参数类型
- pytorch - 错误 403:尝试在 Google colab 中加载预训练模型时被禁止
- r - 列表与数据框
- python-3.x - 在另一列的基础上将 Count 列增加 1
- html - 如何将包裹在弹性容器中的表单居中?
- sql - 安全地将非空列添加到现有表