簡體   English   中英

ReactJS-將setState與Firebase一起使用

[英]ReactJS - Using setState with firebase listen

好吧,我已經知道我們應該做這樣的事情,以使狀態隨着Firebase的變化而更新。

import FirebaseRef from '...'
   .
.
.
class MyComponent extends React.Component {
 state = {
      maxVotes: 0  
    }

componentDidMount() {
   const { boardId } = this.props
   FirebaseRef.child(`boards/${boardId}/maxVotes`).on('value', snapshot => {
      this.setState({maxVotes: snapshot.val()})
   })
}

但是我編碼的習慣是在其他文件中委派API調用並將其導入到組件中。 我可以做這樣的事情嗎?

import { setMaxVotes } from ...
.
.
.
 componentDidMount() {
   const { boardId } = this.props
   setMaxVotes(boardId)
}

以及setMaxVotes方法的外觀如何? 我應該把這樣的事情復雜化,還是最好的做法?

通常將API調用委派給不同的模塊,但是在不同的模塊中設置react組件狀態不是最佳實踐。 因此,您可以為API調用創建不同的模塊,但應在組件本身中設置狀態。 該代碼可能看起來像這樣

componentDidMount() {
   const { boardId } = this.props
   setMaxVotes(boardId, 'value', snapshot => {
      this.setState({maxVotes: snapshot.val()})
   })
}

setMaxVotes(boardId, eventType, cb) {
   FirebaseRef.child(`boards/${boardId}/maxVotes`).on(eventType, cb);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM