【发布时间】:2020-11-16 21:01:00
【问题描述】:
我正在尝试构建一个基本的网络应用程序,用户可以在其中使用 Reddit API 搜索 subreddits。
但是,虽然我可以 console.log 从 API 获取我需要的数据,但我似乎不知道如何显示它。
import React, { useState, useEffect } from "react";
import Amplify, { API, graphqlOperation } from "aws-amplify";
import aws_exports from "./aws-exports";
import { withAuthenticator, AmplifySignOut } from '@aws-amplify/ui-react';
import awsconfig from "./aws-exports";
import './App.css'
import axios from 'axios'
import CharacterGrid from './components/CharacterGrid'
import SearchBar from './components/SearchBar'
Amplify.configure(awsconfig);
const App = () => {
const [items, setItems] = useState([])
const [isLoading, setIsLoading] = useState(true)
const [query, setQuery] = useState('')
useEffect(() => {
const fetchItems = async () => {
setIsLoading(true)
const result = await axios(
`https://www.reddit.com/subreddits/search.json?q=${query}`
)
setItems(result.data)
setIsLoading(false)
}
fetchItems()
}, [query])
return (
<div className='container'>
<AmplifySignOut/>
<SearchBar style={{ marginTop: "6%" }} getQuery={(q) => setQuery(q)} />
<CharacterGrid isLoading={isLoading} items={items} />
</div>
)
}
export default withAuthenticator(App)
子组件CharacterGrid 如下所示:
import React from 'react'
import CharacterItem from './CharacterItem'
const CharacterGrid = ({items, isLoading}) => {
return
isLoading
? (<h1>Loading ...</h1>)
: (
<section className='cards'>
<p>{items.data}</p> //this does not work
<p>{items.children}</p> //this does not work either
</section>
)
}
export default CharacterGrid
我想要做的就是显示从 API 返回的用户输入的查询字符串的 subreddits 的名称。我哪里错了?我也尝试过转换为 JSON,并使用 .map() 映射响应,但无论我尝试什么,我都会遇到错误。我哪里错了?
【问题讨论】:
-
"我哪里出错了?"是你应该说的。这里有什么问题,你在哪里得到什么错误?
标签: javascript reactjs api reddit