javascript - 如何使用三元运算符满足3个条件从github api获取数据?

标签 javascript reactjs

我正在尝试将三元运算符用于 3 个条件。我正在使用 axios 从 github api 获取数据。第一个 isFetching 用于获取数据,其中我将显示加载屏幕,第二个用于显示数据时使用,第三个用于显示错误消息。我不知道如何将其放入三元运算符中,还是我犯了任何其他错误?

Body.js

import React, {Component} from 'react';
import {connect} from 'react-redux';
import 'bootstrap/dist/css/bootstrap.css';

class Body extends Component{

render(){
    const { user, isFetching, error } =this.props;
    return(
        <div>
            {user.map((item,key) => {
                return (
                    <div key={key} className="card" >
                        <img className="card-img-top" src={item.data.avatar_url} alt="Card image cap"/>
                        <div className="card-body">
                            <h5 className="card-title">{item.data.name}</h5>
                            <p className="card-text">{item.data.bio}</p>
                        </div>
                        <ul className="list-group list-group-flush">
                            <li className="list-group-item">{item.data.email}</li>
                            <li className="list-group-item">{item.data.location}</li>
                            <li className="list-group-item">{item.data.followers}</li>
                        </ul>
                        <div className="card-body">
                            <a href={item.url} className="card-link">Profile</a>
                        </div>
                    </div>
                )
            })}

        </div>
);
}
}
function mapStateToProps(state) {
    return{
        user: state.user.user,
        isFetching: state.user.isFetching,
        error: state.user.error
    }
}



export default connect(mapStateToProps) (Body);

最佳答案

嵌套三元运算符的可读性不太好。然而它看起来像

{isFetching? <Loading /> : error ?  <Error />: <Data />}

但是您应该使用 if 语句来使其更具可读性

render(){
    const { user, isFetching, error } =this.props;
    if (isFetching) {
       return <div> Loading ... </div>
    }
    if (error) {
       return <div> Error </div>
    }
    return(
        <div>
            {user.map((item,key) => {
                return (
                    <div key={key} className="card" >
                        <img className="card-img-top" src={item.data.avatar_url} alt="Card image cap"/>
                        <div className="card-body">
                            <h5 className="card-title">{item.data.name}</h5>
                            <p className="card-text">{item.data.bio}</p>
                        </div>
                        <ul className="list-group list-group-flush">
                            <li className="list-group-item">{item.data.email}</li>
                            <li className="list-group-item">{item.data.location}</li>
                            <li className="list-group-item">{item.data.followers}</li>
                        </ul>
                        <div className="card-body">
                            <a href={item.url} className="card-link">Profile</a>
                        </div>
                    </div>
                )
            })}

        </div>
    );
  }
}

关于javascript - 如何使用三元运算符满足3个条件从github api获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53280119/

相关文章:

AJAX 调用后 Javascript 文件不执行

javascript - 在 react 中按换行符拆分字符串

javascript - Webpack + React16 + Javascript ES6 "Unexpected token"错误

javascript - Fluxxor 将 1 组以上的操作添加到 Flux 实例

javascript - VS Code,打字 - 无 IntelliSense

javascript - 返回 JSON 响应到 ajax 调用提示下载包含响应的文件

javascript - 巨大 : How to call a Vpaid Javascript and a Video Ad at the same time?

javascript - 如果 div 框较高,则不会将其他内容压低

reactjs - 如何在带有图例的圆环图中间显示标题?(react-highcharts)

javascript - 生成 JSON 翻译文件