我是 javascript 新手,我正在尝试向 youtube API 发出 get 请求。在使用 axios 之前,我已经预先配置了一些与请求相关的东西。但是,我认为我的问题与 get 函数的使用更相关。
我对请求的预定义配置存储在“youtube”对象下。这是创建它的代码
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
}
});
Run Code Online (Sandbox Code Playgroud)
我的问题与我何时使用这些设置使用 get 函数有关。
下面的代码给了我以下错误:“解析错误:类型转换表达式应该用括号括起来”
onTermSubmit = (term) => {
youtube.get('/search',
params: {
q:term
}
);
};
Run Code Online (Sandbox Code Playgroud)
但是当我在参数周围添加括号时它工作正常:
onTermSubmit = (term) => {
youtube.get('/search', {
params: {
q:term
}
});
};
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么包含括号可以解决此错误,以及该错误最初的实际含义吗?
我正在使用React Router创建一个应用程序,它具有多个路由,包括Uploader上传视频的组件和观看视频的Videos组件。视频页面将一些评论存储为状态,我希望在整个打开的应用程序中保留这些评论。但是,React Router似乎导致每个组件都需要重新安装而不是重新渲染,每当我重新路由回该Video组件时,我的状态都将重置为初始空值。我在组件内部使用的是render方法而不是component方法Route,所以我不明白为什么会这样。有谁知道是什么原因造成的?
这是路由发生的主要应用程序:
class App extends React.Component{
constructor(props){
super(props)
var fileNames
var files
var fileSelected
this.state={fileSelected:null}
}
getFileFromChild= (uploadedFiles)=> {
this.files = uploadedFiles
}
fileButtonClicked= (index)=> {
//extract file chosen by user based on button click
this.setState({fileSelected: this.files[0][index]})
}
render(){
//destructuring props in class component
const {user} = this.props;
return(
<Router>
<div className = "nav-bar">
<Nav/>
<Switch>
<Route path='/' exact render={()=> <HomePage />
}/>
<Route path='/videos' render={()=> …Run Code Online (Sandbox Code Playgroud)