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