const или let in React

Скажем, у меня есть компонент React - немой или нет - и я хочу взять что-то из магазина и поместить его в переменную, чтобы сделать мой код немного более кратким. Должен ли я использовать const или let? Ясно, что состояние изменится.

Вот пример того, о чем я говорю. Опять же, я хочу подчеркнуть, что 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)

Ответ 1

const vs let в основном относится к "изменению" в кодовом блоке. Это имеет значение только в таких ситуациях:

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

В этой ситуации вам нужно будет использовать let, потому что вы меняете значение, присвоенное переменной myValues:

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

Если props.someData меняется, это приведет к повторной обработке компонента. Так что const vs let не входит в игру. Весь метод render повторно запускается.

Так что, сказал, я использую const в ситуациях, которые вы описываете. Если вы напрямую не манипулируете ценностью переменной, используйте const.

Ответ 2

const - это сигнал, что переменная не будет переназначена.

let это сигнал о том, что переменная может быть переназначена

Дополнительные вещи, чтобы обдумать:

  • Использовать const по умолчанию
  • Использование let только если перекомпоновка требуется
  • const не указывает, что значение является "постоянным или неизменным".

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

    Только привязка непреложна. т.е. с использованием оператора присваивания или унарного или постфиксного или ++ оператора в переменной const вызывается исключение TypeError

  • ES6 const и let тоже подняты. Хотя идентификаторы имеют одинаковую ссылку на память из времени компиляции, они не могут быть доступны до объявления в коде. (но не так, как мы думали, что объявление будет физически перенесено в верхнюю часть области);)

Ответ 3

Позвольте мне обратиться к правилу ESLint, предпочитая - const у него есть хорошее объяснение по этому вопросу.

Единственное, что я могу добавить:

предпочитают запускать все переменные с const если вы не уверены

даже если вы позже измените его, отладчик сообщит вам

Ответ 4

Я изучаю реакцию уже 4 месяца и по какой-то причине в этом нет никакого смысла. Я чувствую, что есть радикальная кривая обучения от простого начала реакции (которой не так уж много) до чрезвычайно продвинутых вещей, которые я не получаю