Javascript Youtube数据Api V3,使用React js显示先前获取的结果
我制作了一个youtube克隆,用户可以在其中搜索一个术语,youtube数据API将在react js中显示所需的结果,但每次我查询之前查询的数据时,都会显示出来。 当我记录“Post”即JSON数据时 **搜索查询组件*Javascript Youtube数据Api V3,使用React js显示先前获取的结果,javascript,reactjs,axios,youtube-api,react-hooks,Javascript,Reactjs,Axios,Youtube Api,React Hooks,我制作了一个youtube克隆,用户可以在其中搜索一个术语,youtube数据API将在react js中显示所需的结果,但每次我查询之前查询的数据时,都会显示出来。 当我记录“Post”即JSON数据时 **搜索查询组件* import React,{useEffect,useState} from 'react' import axios from 'axios' import Cards from './Cards' function SearchResu
import React,{useEffect,useState} from 'react'
import axios from 'axios'
import Cards from './Cards'
function SearchResults(props) {
const query = props.match.params.query;
const [posts, setPosts] = useState([])
useEffect(() => {
axios({
"method": "GET",
"url": 'https://www.googleapis.com/youtube/v3/search',
"params":{
'part':'snippet',
'maxResults':'20',
'key':'[API_KEY]',
'q':query
}
})
.then((res) => {
setPosts(res.data.items)
})
.catch((error) => {
console.log(error)
})
console.log(posts);
},[query])
return (
<div>
<Cards/>
</div>
)
}
export default SearchResults
import React,{useffect,useState}来自“React”
从“axios”导入axios
从“./Cards”导入卡片
功能搜索结果(道具){
const query=props.match.params.query;
const[posts,setPosts]=useState([])
useffect(()=>{
axios({
“方法”:“获取”,
“url”:https://www.googleapis.com/youtube/v3/search',
“参数”:{
“部分”:“片段”,
“maxResults”:“20”,
“密钥”:“API_密钥”,
“q”:查询
}
})
。然后((res)=>{
设置柱(res.data.items)
})
.catch((错误)=>{
console.log(错误)
})
控制台日志(posts);
},[查询])
返回(
)
}
导出默认搜索结果
您的控制台.log(posts)
步骤发生的时间早于设置posts(res.data.items)
步骤
要捕获帖子的更改
我建议使用useffect
hook作为:
useEffect(() => {
console.log(posts);
}, [posts]);
进一步阅读有关useffect
您的控制台日志(posts)
步骤发生的时间早于设置posts(res.data.items)
步骤
要捕获帖子的更改
我建议使用useffect
hook作为:
useEffect(() => {
console.log(posts);
}, [posts]);
请进一步阅读您在useEffect钩子中添加[query]作为第二个参数的
useEffect
。这意味着在更改查询变量==>之前不会执行回调函数(useEffect方法的第一个参数)。我想您必须通过[posts]更改[query]
只需使用以下代码:
import React,{useEffect,useState} from 'react'
import axios from 'axios'
import Cards from './Cards'
function SearchResults(props) {
const query = props.match.params.query;
const [posts, setPosts] = useState([])
useEffect(() => {
axios({
"method": "GET",
"url": 'https://www.googleapis.com/youtube/v3/search',
"params":{
'part':'snippet',
'maxResults':'20',
'key':'[API_KEY]',
'q':query
}
})
.then((res) => {
setPosts(res.data.items)
})
.catch((error) => {
console.log(error)
})
console.log(posts);
},[posts])
return (
<div>
<Cards/>
</div>
)
}
export default SearchResults
import React,{useffect,useState}来自“React”
从“axios”导入axios
从“./Cards”导入卡片
功能搜索结果(道具){
const query=props.match.params.query;
const[posts,setPosts]=useState([])
useffect(()=>{
axios({
“方法”:“获取”,
“url”:https://www.googleapis.com/youtube/v3/search',
“参数”:{
“部分”:“片段”,
“maxResults”:“20”,
“密钥”:“API_密钥”,
“q”:查询
}
})
。然后((res)=>{
设置柱(res.data.items)
})
.catch((错误)=>{
console.log(错误)
})
控制台日志(posts);
},[员额])
返回(
)
}
导出默认搜索结果
在useEffect钩子中添加[query]作为第二个参数。这意味着回调函数(useEffect方法的第一个参数)将不会执行,直到查询变量更改==>我认为您必须通过[posts]更改[query]
只需使用以下代码:
import React,{useEffect,useState} from 'react'
import axios from 'axios'
import Cards from './Cards'
function SearchResults(props) {
const query = props.match.params.query;
const [posts, setPosts] = useState([])
useEffect(() => {
axios({
"method": "GET",
"url": 'https://www.googleapis.com/youtube/v3/search',
"params":{
'part':'snippet',
'maxResults':'20',
'key':'[API_KEY]',
'q':query
}
})
.then((res) => {
setPosts(res.data.items)
})
.catch((error) => {
console.log(error)
})
console.log(posts);
},[posts])
return (
<div>
<Cards/>
</div>
)
}
export default SearchResults
import React,{useffect,useState}来自“React”
从“axios”导入axios
从“./Cards”导入卡片
功能搜索结果(道具){
const query=props.match.params.query;
const[posts,setPosts]=useState([])
useffect(()=>{
axios({
“方法”:“获取”,
“url”:https://www.googleapis.com/youtube/v3/search',
“参数”:{
“部分”:“片段”,
“maxResults”:“20”,
“密钥”:“API_密钥”,
“q”:查询
}
})
。然后((res)=>{
设置柱(res.data.items)
})
.catch((错误)=>{
console.log(错误)
})
控制台日志(posts);
},[员额])
返回(
)
}
导出默认搜索结果