2016-11-27 46 views
14

假設我有一個React組件 - 不管是否愚蠢 - 我想從商店中獲取一些東西,並將其放入一個變量中,以使我的代碼更加簡潔。我應該使用const還是讓?顯然,國家會改變。const或let in React組件

下面是我正在談論的一個例子。同樣,我想強調一下,當用戶與我的應用進行交互時,myValues會發生變化。

class MyComponent extends Component { 

    render() { 

     // Here, should I use const or let? 
     const myValues = this.props.someData; 

     return(
      <div> 

      {myValues.map(item => (
        <SomeOtherComponent key={item.id} data={item} /> 
       ))} 

      </div> 
     ); 
    }; 
} 

function mapStateToProps(state) { 
    return { 
     someData: state.someValuesComingFromApi 
    } 
} 

export default connect(mapStateToProps)(MyComponent) 

回答

12

const VS let大多是在一個代碼塊 「改變」 的事情。唯一要緊的在這樣的情況:

const myValues = this.props.someData; 
if (*some condition*) { 
    myValues = []; 
} 

在這種情況下,你需要使用讓,因爲你正在改變賦給變量myValues值:

let myValues = this.props.someData; 
if (*some condition*) { 
    myValues = []; 
} 

如果props.someData正在發生變化,就會觸發重新渲染組件。所以const vs let不會進來玩。整個render方法重新運行。

所以說,我在你描述的情況下使用const。除非您直接操縱變量的有價值,否則使用const

1

讓我參考ESLint規則prefer-const它在這個問題上有很好的解釋。

我唯一可以添加:

喜歡,如果你不知道,開始所有的變量與const

即使以後發生變異它,調試器會通知你

16

const是一個信號,表示變量不會被重新分配

let是一個信號,即變量可被重新分配

其他事情思考:

  • 使用const默認
  • 使用let僅當需要重新綁定
  • const不表示th在一個值是'不變'或不可變的。

    const foo = {}; 
    foo.bar = 10; 
    console.log(foo.bar); // --> 10 
    

    只有綁定是不可變的。即,使用一個賦值操作符或一元或後綴 - 或++運算符上的常量變量拋出TypeError異常

  • ES6 constlethoisted太。儘管標識符與編譯時具有相同的內存引用,但在代碼中聲明之前不能訪問它們。(但不像我們認爲的聲明將物理移動到範圍的頂部);)