【发布时间】:2021-01-22 16:04:37
【问题描述】:
我正在尝试使用 axios 调用 API 数据。 我收到了 console.log 的回复。虽然响应没有显示在屏幕上。真的坚持这一点。
export default class PrivacyPolicyScreen extends React.Component {
constructor(props) {
super(props);
this.state = {
isLoading: true,
dataSource: null,
}
}
componentDidMount () {
return fetch ('API', {
method: 'GET',
headers:{
'Content-Type': "application/json",
'x-api-key': 'KEy'
},
})
.then( (response)=> response.json() )
.then ( (responseJson) => {
console.log ("This is the response that should be in the app", {responseJson})
this.setState({
isLoading: false,
dataSource: responseJson.terms,
})
})
.catch((error) => {
console.log(error)
})
};
render () {
if (this.state.isLoading){
return (
<Text >Loading Privacy!!!!</Text>
)
} else {
let privpolicy = this.state.responseJson.map((val, key ) => {
return <View key={key}>
<Text >{val.dataSource}</Text>
</View>
})
return (
{privpolicy}
);
}
}
}
错误是TypeError: Cannot read property 'map' of undefined 未定义的对象在第 42 行。我尝试了componentWillMount 和其他几个迭代。我真的很难在这里找到解决方案。
【问题讨论】:
-
为什么你的 console.log 中有大括号?如果您 console.log
responseJson.terms,它是否显示了它要显示的内容?一个数组? -
我在跑步时得到
undefined。console.log (responseJson.terms) -
这意味着您正在尝试映射不存在的东西。记录
responseJson并从中设置您需要的内容,但terms似乎未定义。然后参考@Kerchik 的回答。 -
您能分享您收到的
responseJson对象吗?首先你必须正确设置响应状态,我们稍后会处理第二个错误。 -
我会添加一个答案。
标签: json reactjs react-native api