Я новичок в javascript и пытаюсь сделать запрос на получение API YouTube. Я предварительно настроил несколько вещей, связанных с запросом, прежде чем использовать axios. Однако я думаю, что мой вопрос больше связан с использованием функции get.
Моя предопределенная конфигурация для запроса хранится в объекте «youtube». Вот код uesd для его создания
import axios from 'axios';
const KEY = 'AIzaSyDVd1jDhcZdtJb--1_ncBqpL0Gxgfs9ys8';
export default axios.create({
baseURL: 'https://www.googleapis.com/youtube/v3',
params: {
part: 'snippet',
maxResults: 5,
key: KEY
}
});
Мой вопрос связан с тем, когда я использую функцию get с этими настройками.
Приведенный ниже код дал мне следующую ошибку: «Ошибка синтаксического анализа: ожидается, что выражение приведения типа будет заключено в круглые скобки»
onTermSubmit = (term) => {
youtube.get('/search',
params: {
q:term
}
);
};
Но когда я добавляю круглые скобки вокруг параметров, все работает нормально:
onTermSubmit = (term) => {
youtube.get('/search', {
params: {
q:term
}
});
};
Может ли кто-нибудь объяснить, почему включение круглых скобок решает эту ошибку, а также что на самом деле означает ошибка?
Без фигурных скобок (они не скобки) ваш код был бы недопустимым JavaScript, потому что у вас есть инициализатор свойства (params: {q:term}
) вне литерала объекта, где синтаксический анализатор ожидает аргумент для get
. Из сообщения об ошибке я предполагаю, что вы используете TypeScript, который пытается интерпретировать часть после params:
как выражение типа.
Добавление {}
исправляет это, потому что вам нужно обернуть этот инициализатор свойства в литерал объекта, поэтому вы передаете объект в качестве второго аргумента get
.
@SeanBarker - Да. Значение params
— это объект со свойством q
, значение которого происходит от term
.
Поскольку вы не включаете {} в методы this.setState:
это та же самая причина, по которой q:term также находится внутри фигурных скобок?