我试图理解为什么我的API响应数据没有显示出来。我已经用console.log测试了我的响应数据是否正确。
在我的TopCryptoList.js组件中,我试图根据我的API调用响应数据在平板列表上显示数据。结果数据应该来自发生API调用的useResults.js文件。出于某种原因,我无法从useResults.js获取“结果”数据到我的TopCryptoList.js组件。
我是不是错过了什么明显的东西?我只是在学习使用React、状态和钩子。当我console.log(response.data)在useResults.jsaxios.get调用之后,我得到正确的JSON响应数据。然而,当我console.log(结果)在我的TopCryptoList我得到空对象,因此Flatlist不能呈现任何可见的东西。
TopCryptoList.js:
import React from 'react';
import { View, Text, FlatList, StyleSheet, TextBase } from 'react-native';
import { createAppContainer } from 'react-navigation';
import useResults from '../hooks/useResults';
const TopCryptoList = ( ) => {
const [searchCrypto, results] = useResults();
console.log("THIS WE HAVE: " + results);
return (
<View style={styles.container}>
<FlatList
showsVerticalScrollIndicator={false}
data={ results }
keyExtractor={( result ) => result.id}
renderItem={({ result }) => {
return (
<Text style={styles.item}>{result.name}</Text>
);
}}
/>
</View>
)
}
useResults.js:
import { useEffect, useState } from 'react';
import axios from 'axios';
export default () => {
const [results, setResults] = useState([]);
const options = {
method: 'GET',
params: {
'id': '1,2'
},
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8',
'X-CMC_PRO_API_KEY': 'my api key'
},
json: true,
gzip: true
};
const searchCrypto = async () => {
try {
const response = await axios.get('https://pro-
api.coinmarketcap.com/v1/cryptocurrency/quotes/latest', options);
setResults(response.data);
} catch (error) {
console.log(error);
}
}
useEffect(() => {
searchCrypto();
}, [])
return [searchCrypto, results];
}
你不能在Flatlist中使用对象,你需要从你的响应中创建一个数组,你可以像这样编辑search chCrypto
函数:
useResults.js
const searchCrypto = async () => {
try {
const response = await axios.get('https://pro-
api.coinmarketcap.com/v1/cryptocurrency/quotes/latest', options);
const newArr = [];
Object.keys(response.data.data).map( (key,index)=>{
newArr.push(response.data.data[key]);
});
// console.log(newArr)
setResults(newArr)
} catch (error) {
console.log(error);
}
}
最后在renderItem中,你可以只使用项目
而不是结果
import React from 'react';
import { View, Text, FlatList, StyleSheet, TextBase } from 'react-native';
import { createAppContainer } from 'react-navigation';
import useResults from '../hooks/useResults';
const TopCryptoList = ( ) => {
const [searchCrypto, results] = useResults();
console.log("THIS WE HAVE: " + results);
return (
<View style={styles.container}>
<FlatList
showsVerticalScrollIndicator={false}
data={ results }
keyExtractor={( item) => item.id}
renderItem={({ item}) => {
return (
<Text key={ item.id } style={styles.item}>{item.name}</Text>
);
}}
/>
</View>
)
}
我已经试过了它管用希望这对你有帮助
My mainactivity.xml:包括一个textview和ListView。 我的问题是如何使用ArrayAdapter将响应从volley传递到listview?
我正在尝试一些简单的方法,使用FetchAPI从应用程序前端发出请求,如下所示 我在服务器上像这样处理这个请求, 但是,当我尝试访问前端console.log(响应)上的数据时,会得到以下对象 响应主体为空。我想那就是数据显示的地方?如何有效地从服务器传递数据?
我在更新react native和react后出现此错误 我认为这是正确的语法,但我不知道为什么显示这个错误: SyntaxError:导出时出现意外标记= 。在模块上运行InthisContext(vm.js:53:16) _在对象上编译(module.js:387:25) 。模块_扩展。。js(module.js:422:10) 在模块中。在函数处加载(module.js:357:32) 。模
我是VueJs的新手 "https://github.com/coreui/coreui-free-vue-admin-template/blob/master/src/views/base/Tables.vue" 在上面的vue中。我想动态地将数据分配给“someData”变量。我试着像下面那样把它绑起来,但没用。
问题内容: 我可以选择该项目并在Webdriver上检索信息。但是我不知道如何将响应URL传递给crawlspider。 所以这就是我被困住的地方。我能够使用上面的代码进行查询。但是,如何将resp_for_scrapy传递给crawlspider?我把resp_for_scrapy代替了item,但这没用。 任何建议将不胜感激!!!! 编辑我包括一个中间件类,可从Spider类之前的下拉列表中进