javascript - 我将如何使用 React Native 访问这个 JSON 文件
问题描述
我有一个使用标签栏的正常反应本机应用程序。在我当前的版本中,我可以让它显示我从 youtube 视频中找到的 VSON 的平面列表。我现在想使用我自己的 JSON 列表,但我遇到了问题。
这是在线 JSON 文件的链接:api.jsonbin.io/b/5b3a49c8a5a2f34ea6b0fbc8
这是我从 youtube 视频中获得的正在处理的特定文件的代码(这有效并显示名称列表)。请注意,这是我的标签栏中的一个标签:
我的问题是我需要将 this.setState({ data: json.results }) 设置为什么,然后我要设置什么 { ${item.name.first} ${item.name.last}
} }
如果我只想显示药物CodeableConcept
import React, { Component } from "react";
import {
View,
Text,
StyleSheet,
FlatList
} from "react-native";
import { Icon } from 'native-base'
class LikesTab extends Component {
//SETTING THE STATE MAKING AN EMPTY ARRAY WHICH WE FIL
state = {
data: []
};
componentWillMount() {
this.fetchData();
}
//Getting the data
fetchData = async () => {
const response = await fetch("https://randomuser.me/api?results=500");
const json = await response.json();
this.setState({ data: json.results });
};
//var customData = require('./customData.json');
//Setting what is shown
render() {
return (
<View style={styles.container}>
<FlatList
data={this.state.data}
keyExtractor={(x, i) => i}
renderItem={({ item }) =>
<Text>
{`${item.name.first} ${item.name.last}`}
</Text>}
/>
</View>
);
}
}
export default LikesTab;
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center'
}
});
这是我当前的代码,它只显示一个空白屏幕:
import React, { Component } from "react";
import {
View,
Text,
StyleSheet,
FlatList
} from "react-native";
import { Icon } from 'native-base'
class LikesTab extends Component {
//SETTING THE STATE MAKING AN EMPTY ARRAY WHICH WE FIL
state = {
data: []
};
componentWillMount() {
this.fetchData();
}
//Getting the data
fetchData = async () => {
const response = await fetch("api.jsonbin.io/b/5b3a49c8a5a2f34ea6b0fbc8");
const json = await response.json();
this.setState({ data: json.results });
};
//var customData = require('./customData.json');
//Setting what is shown
render() {
return (
<View style={styles.container}>
<FlatList
data={this.state.data}
keyExtractor={(x, i) => i}
renderItem={({ item }) =>
<Text>
{`${item.entry.medicationCodeableConcept}`}
</Text>}
/>
</View>
);
}
}
export default LikesTab;
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center'
}
});
解决方案
我认为当你设置状态时,你设置了一个未定义的值,json.results
而不是你需要这样做
fetchData = async () => {
const response = await fetch(
'http://api.jsonbin.io/b/5b3a49c8a5a2f34ea6b0fbc8'
);
const json = await response.json();
console.log(json);
this.setState({ data: json.entry });
};
并且在渲染使用时
<Text>{item.resource.medicationCodeableConcept.text}</Text>
推荐阅读
- batch-file - 如果 zip 文件和文件夹名称相同,请将 zip 文件复制到文件夹中
- scala - 使用 UDF 及其性能的 Spark Scala 数据集验证
- python - 重复相同的代码块以创建不同的值
- ecmascript-6 - 'import' 和 'export' 可能只与 'sourceType: module' 一起出现
- c++ - How to improve logic to check whether 4 boolean values match some cases
- android - 如何禁用 Kotlin 中的选项卡?
- java - 如何使用声纳规则在 java 代码中查找特定代码出现
- python - 使用 python jenkins api 获取从节点详细信息
- php - Laravel 会话/中间件/身份验证问题
- windows - 如何确保在 TPM 中创建密钥?