gpt4 book ai didi

javascript - 在 React Native 中从 API 端点获取完整数据后如何显示数据?

转载 作者:行者123 更新时间:2023-11-30 20:09:50 24 4
gpt4 key购买 nike

我正在从 API 端点获取数据。我已经为 VenueList.js 做了 action 和 reducer

venueAction.js:

import { FETCH_VENUES } from './types';
import axios from 'axios';

export const fetchVenues = () => dispatch => {
axios.get(`API_ENDPOINT`)
.then( venues =>
dispatch({
type: FETCH_VENUES,
payload: venues
})
)
.catch( error => {
console.log(error);
});
};

venueReducer.js:

import { FETCH_VENUES } from '../actions/types';

const initialState = {
items: []
}

export default function (state = initialState, action) {
switch (action.type) {
case FETCH_VENUES:
return {
...state,
items: action.payload
};
default:
return state;
}
}

VenueList.js:

import React, { Component } from 'react';
import { View } from 'react-native';
import { connect } from 'react-redux';
import { fetchVenues } from '../actions/venueAction';

class VenueList extends Component {

componentWillMount (){
this.props.fetchVenues();
}

render() {
// if(this.props.venues.data){
console.log(this.props.venues.data[0].highlight)
// }

return (
<View style={styles.container}>

</View>
);
}
}

const styles = StyleSheet.create({
container: {
flex: 1
},

});

const mapStateToProps = state => ({
venues: state.venues.items
})

export default connect (mapStateToProps, { fetchVenues })(VenueList);

如果我取消注释 VenueList.js 中的 if 语句,那么它会显示 this.props.venues.data[0].highlight数据,但如果没有 if 语句,则会抛出错误。从 API 端点获取数据后如何显示数据。最初在获取期间 venues未定义,1 秒后使用 api 端点填充数据。所以如果我想显示

<Text>{this.props.venues.data[0].highlight}</Text>它抛出错误我需要在每个部分添加 if 语句吗?我该如何克服这个问题?

截图:

如果我评论 if 语句: enter image description here

一开始 venues 是空数组,获取数据后填充如下: enter image description here

最佳答案

您可以在尝试访问它之前确保它已定义,并在加载时呈现一些其他文本。

{this.props.venues ? this.props.venues.data[0].highlight : "Text to display when not loaded"}

关于javascript - 在 React Native 中从 API 端点获取完整数据后如何显示数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52521221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com