#javascript
#javascript
Вопрос:
Я использую react navigation v5 и переношу параметр с одного экрана на другой. Я заставил это работать, но я не могу понять, зачем мне нужно использовать фигурные скобки там. И куда мне добавить параметр props?
1 screen
<TouchableOpacity onPress={() => { nav.navigate('userProfile', { userId: 1 }) }} >
2 screen
const userProfile = ({ route }) => {
const { id } = route.params;
return (
<View>
<Text>{id}</Text>
</View>
)
}
Как я уже сказал, это работает так, но обычно у меня есть что-то вроде
const userProfile = (props) =>
Как бы я добавил реквизиты на экран 2? И зачем мне нужно использовать фигурные скобки и как мне узнать, могу ли я добавить его в качестве параметра, например, props, или мне нужно использовать скобки.
Спасибо!
Обновление: я узнал, что он также работает с props.route.params.id . Сейчас я очень смущен.
Комментарии:
1.
({ route }) => { ...
просто разрушает свойство route изprops
. Это не вопрос react, это вопрос о деструктурировании объектов JS
Ответ №1:
В javascript это называется деструктурированием…
здесь вы извлекаете route
из userProfile
props
const userProfile = ({ route }) => {
что эквивалентно
const userProfile = (props) => {
const route = props.route;
};
==
const userProfile = (props) => {
const { route } = props;
};
Комментарии:
1. Технически это не эквивалентно использованию
const route = ...
. При деструктурировании параметра он не будет объявлен как const по умолчанию2. Ах, так это объясняет, почему props.route.params.id , также работает. Почему я должен использовать это вместо просто реквизита? Большое спасибо!
3. @Sylber Да, это просто сокращенный синтаксис для извлечения определенных свойств из объекта в именованные локальные переменные. Причина, по которой вы это делаете, заключается в удобстве, больше всего на свете. Ни один из способов не является «более правильным»
4. @Sylber личные предпочтения … просто чтобы сохранить строку кода…
5. Привет, @mhodges Я просто пытаюсь прояснить идею здесь..