簡體   English   中英

在ES6類中聲明變量。

[英]Declaring a variable inside a ES6 class.

我想了解如何在類中聲明變量?

例如,直到現在,我一直在宣稱這樣

let displaySearchCrypto = []
let updateCoinData = [];

class cryptoTicker extends PureComponent {

在我的課堂上使用它(我的意思是在我的班級里面這樣)

componentDidUpdate() {
 updateCoinData = [...this.props.cryptoLoaded]; 

        if (updateCoinData[i]["short"] == tradeMsg.coin ) {


        //Search for changed Crypto Value
        updateCoinData[i]["long"] = tradeMsg["message"]["msg"]["long"]
        updateCoinData["short"] = tradeMsg["message"]["msg"]["short"]

要么

 search = () => {
 displaySearchCrypto.push({
                no: {i},
                key: this.props.cryptoLoaded[i]["long"],
                short: this.props.cryptoLoaded[i]["short"],
                long: this.props.cryptoLoaded[i]["long"],
                price: this.props.cryptoLoaded[i]["price"],
                mktcap: this.props.cryptoLoaded[i]["mktcap"],
                perc: this.props.cryptoLoaded[i]["perc"],
                vwapData: this.props.cryptoLoaded[i]["vwapData"] 
               })

但是,由於我將僅在單個類中使用,我認為我不應該在全局范圍類中聲明。 所以我的問題是 ,如何在類中聲明一個變量?

您不在類中聲明變量。 您在構造函數或方法中聲明變量,或者創建實例的屬性 (或類本身,“靜態”屬性,這些屬性是構造函數的特性)。

如果你正在使用模塊,你的第一個代碼塊將不會創建全局變量,它將創建模塊全局變量(僅對該模塊中的代碼進行全局變換)。 如果該模塊僅包含該類,並且您的意思是變量和它們引用的數組由該類的所有實例共享,那么您可以繼續這樣做。

但我懷疑你希望它們是實例的屬性,而不是在實例之間共享,在這種情況下,你在構造函數中定義這些屬性:

constructor(props) {
    super(props);
    this.displaySearchCrypto = [];
    this.updateCoinData = [...this.props.cryptoLoaded];
}

然后通過引用實例(通常通過this. )來使用它們。

是的,我認為TJ Crowder非常好。 但是我想添加以下內容:

對象和類的任務是提供某些實體的抽象 在ReactJS的情況下,這些對象是反應組件。 將與某個組件相關的所有數據放在對象中的優點提供了以下優點:

  • 對象內的所有內容都自動命名空間,這有助於防止潛在的命名沖突
  • 我們可以隱藏對象內部的一些實現細節。 然后在另一個地方使用這個對象,我們不必為實現某些方法而煩惱,我們只需要知道如何與它進行交互。

還要記住:

課程有:

  • 沒有變數,但是性能 ,這是與對象相關聯。
  • 沒有函數,只有與對象關聯的方法

此外,重要的是要知道JS使用原型繼承 class關鍵字只是頂級原型繼承的語法糖構建。

暫無
暫無

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

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