Вы определяете docRef
в constructor
, поэтому вы можете получить к нему доступ только в constructor
.
constructor(){
super()
const docRef = firestore.doc("samples/sandwichData")
docRef.set({
hotDogStatus: "not a sandwich!"
})
}
. Если вы хотите, чтобы он был доступен в любом месте класса, вам нужно определитьэто как свойство экземпляра, как получатель, или установите его на `this.
Пример использования свойства.Это зависит от нового стандарта JS .
class ReduxFirebase extends connect(store)(LitElement) {
docRef = firestore.doc("samples/sandwichData")
constructor(){
super()
this.docRef.set({
hotDogStatus: "not a sandwich!"
})
}
render() {
return html`
<button @click="${this.writeToDb}">Change Status</button>
`
}
writeToDb() {
this.docRef.set({
hotDogStatus: "may be a sandwich"
})
}
}
Пример использования геттера.
class ReduxFirebase extends connect(store)(LitElement) {
constructor(){
super()
this.docRef.set({
hotDogStatus: "not a sandwich!"
})
}
get docRef() {
return firestore.doc("samples/sandwichData")
}
render() {
return html`
<button @click="${this.writeToDb}">Change Status</button>
`
}
writeToDb() {
this.docRef.set({
hotDogStatus: "may be a sandwich"
})
}
}
Пример настройки this
.
class ReduxFirebase extends connect(store)(LitElement) {
constructor(){
super()
this.docRef = firestore.doc("samples/sandwichData")
this.docRef.set({
hotDogStatus: "not a sandwich!"
})
}
render() {
return html`
<button @click="${this.writeToDb}">Change Status</button>
`
}
writeToDb() {
this.docRef.set({
hotDogStatus: "may be a sandwich"
})
}
}
Обратите внимание, что вам нужно убедиться, что firestore.doc("samples/sandwichData")
не выполняет кучу работы до того, как это потребуется, и определить ее на соответствующей стадии жизненного цикла компонента .