首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从axios请求获取特定数据

从axios请求获取特定数据
EN

Stack Overflow用户
提问于 2022-10-26 04:23:51
回答 1查看 37关注 0票数 1

我试图获取每个单独图像的href,比如我想要显示的粗体href

代码语言:javascript
运行
AI代码解释
复制
{
  "collection": {
    "href": "https://images-api.nasa.gov/search?q=moon",
    "version": "1.0",
    "items": [
      {
        "href": "https://images-assets.nasa.gov/image/PIA12235/collection.json",
        "data": [ ... ],
        "links": [
          {
            **"href": "https://images-assets.nasa.gov/image/PIA12235/PIA12235~thumb.jpg",**
            "render": "image",
            "rel": "preview"
          }
        ]
      }
    ]
  }
}

这是我的密码。总之,我试图在axios请求数据值方面更进一步,它说一切都是undefined。我不明白为什么我不能map出每个链接。

代码语言:javascript
运行
AI代码解释
复制
const { useState, useEffect } = React;

const Api = () => {
    const api = "https://images-api.nasa.gov/search?q=moon";
    const [list, setList] = useState([null]);

    useEffect(() => {
        axios.get(api).then((res) => {
            setList(res.data.collection.items.map((item) => item.links));
        });
    }, [api]);

    if (list) {
        return (
            <div>
                <p>{console.log(list)}</p>
            </div>
        );
    }
};

const Example = () => {
    return <Api />;
};

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<Example />);
代码语言:javascript
运行
AI代码解释
复制
<div id="root"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.1.0/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.1.0/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/axios@1.1.3/dist/axios.min.js"></script>

EN

回答 1

Stack Overflow用户

发布于 2022-10-26 04:38:34

我认为可能有两个问题:

  1. -- mapsetList调用中的结果是数组。如果您想要一个平面数组,可以在其上使用flat,或者以稍微不同的方式构建它。(另外,我建议不要以[null]开头,只是一个空白数组([])或null--在代码后面的if (list)中,null是有意义的。)元素对象的
  2. ,而不是all< code >E 214具有links属性,因此map返回这些项的undefined。我们可以使用filter过滤掉这些数据,或者提供空数组作为备用的.

下面是flat和过滤器的一个示例;由于您似乎使用了href,所以我筛选出了任何不是对象或没有href属性的元素:

代码语言:javascript
运行
AI代码解释
复制
const { useState, useEffect } = React;

const Api = () => {
    const api = "https://images-api.nasa.gov/search?q=moon";
    const [list, setList] = useState(null);

    useEffect(() => {
        axios.get(api).then((res) => {
            setList(
                res.data.collection.items.map((item) => item.links)
                .flat()
                .filter(e => typeof e === "object" && e.href)
            );
        });
    }, [api]);

    if (list) {
        return (
            <div>
                <div>Links ({list.length}):</div>
                {list.map(({href}, index) => <div key={href+"::"+index}>{href}</div>)}
            </div>
        );
    }
};

const Example = () => {
    return <Api />;
};

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<Example />);
代码语言:javascript
运行
AI代码解释
复制
<div id="root"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.1.0/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.1.0/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/axios@1.1.3/dist/axios.min.js"></script>

如果您想在执行过程中过滤掉它们,可以使用空的合并操作符进行筛选,在不存在item.links时提供一个空数组作为替代:

代码语言:javascript
运行
AI代码解释
复制
useEffect(() => {
    axios.get(api).then((res) => {
        setList(
            res.data.collection.items.map((item) => item.links ?? [])
            // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^
            .flat()
            // ...and then no `filter` here...
        );
    });
}, [api]);

下面是一个示例(使用||而不是??,因为过时版本的Babel‘Stack代码段不理解??--在这个特定的情况下没关系,我们可以使用|| ):

代码语言:javascript
运行
AI代码解释
复制
const { useState, useEffect } = React;

const Api = () => {
    const api = "https://images-api.nasa.gov/search?q=moon";
    const [list, setList] = useState(null);

    useEffect(() => {
        axios.get(api).then((res) => {
            setList(
                res.data.collection.items.map((item) => item.links || [])
                .flat()
            );
        });
    }, [api]);

    if (list) {
        return (
            <div>
                <div>Links ({list.length}):</div>
                {list.map(({href}, index) => <div key={href+"::"+index}>{href}</div>)}
            </div>
        );
    }
};

const Example = () => {
    return <Api />;
};

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<Example />);
代码语言:javascript
运行
AI代码解释
复制
<div id="root"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.1.0/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.1.0/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/axios@1.1.3/dist/axios.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74207727

复制
相关文章
取消 SSH 私钥密码
前言 生成 SSH 秘钥时,会让你输入私钥的密码,直接回车则意为不设密码,如果设置了私钥密码,每次使用 SSH 进行操作都需要输入私钥密码。虽然这样增加了安全性,但是使用 SSH 的目的很多时候就是想更加方便,跳过输入账号密码这一步。只要保存好自己的私钥不泄露,一般不设私钥密码是没有太大的风险的。如果已经生成带密码的私钥,又想取消密码可以按下列两种方法操作。 取消 SSH 私钥密码 方法一 使用 ssh-keygen 命令更改 SSH Key 密码,进入秘钥所在到的文件夹内(一般为~/.ssh),执行下列
木制robot
2018/04/13
9.9K0
ssh公私钥登录方式设置
①环境说明:两台Linux主机,host1:192.168.5.1,host2:192.168.5.10。
全栈程序员站长
2022/07/08
8980
ssh公私钥登录方式设置
从Windows 10 SSH-Agent中提取SSH私钥
在这个周末我安装了Windows 10 Spring Update,最令我期待的就是它的内置OpenSSH工具,这意味着Windows管理员不再需要使用Putty和PPK格式的密钥了。随后,我花了些时间来探索并了解该版本所支持的特性。最终没有令我失望,我惊喜地看到ssh-agent.exe也被包含在内。在MSDN的一篇关于使用新Windows ssh-agent文章的以下部分,引起了我的注意:
FB客服
2018/07/30
2.7K0
从Windows 10 SSH-Agent中提取SSH私钥
linux ssh指定私钥登陆linux主机
ssh指定私钥登陆linux主机 服务端 ssh-keygen -t rsa -b 4096 一路回车 cat .ssh/id_rsa.pub >> .ssh/authorized_keys 将公钥追加到authorized_keys 客户端 下载私钥,指定私钥登陆 scp root@192.168.*.*:/root/.ssh/id_rsa ./192.168.*.*.rsa localhost:~ wangzi$ mv 23.pem 192.168.*.*.rsa localhost:~ wangz
葫芦
2021/01/18
5.7K0
ansible(3)——主机列表,ssh,公钥私钥
这里报错是因为我们没有将这两台主机的记录加入到/root/.ssh/known_hosts中:
gzq大数据
2020/11/11
1.7K0
ansible(3)——主机列表,ssh,公钥私钥
公钥私钥
上面几篇文章我们讲到了对称加密,包括它的几种实现AES,DES算法。那么有了对称加密算法,我们是否就可以安全的和第三方进行通信了呢?考虑如下情况:
程序那些事
2020/07/08
1.8K0
公钥私钥
钱包地址 私钥_eth私钥就是收款地址吗
钱包地址是我们最常见的,它们是一串数字和字母的组合,看起来有点像乱码。钱包地址就像银行卡号,代表了你的比特币账户。通过交易所、比特币客户端和在线钱包都可以获得钱包地址。
全栈程序员站长
2022/09/16
1.7K0
当SSH免密登录的私钥被移动之后... ...
版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢。
耕耘实录
2018/12/20
7470
[Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
安全是软件开始中很重要的一个环节,在金融场景以及设计资产的场景下更是如此,在加密算法中主要使用较多加密方式分别是对称加密和非对称加密,对称加密中的代表是AES,DES,3DES等,非对称加密中使用比较多的是RSA,ECC等,最近火热的比特币中就使用ECC椭圆曲线算法,本篇文章主要是笔者在使用Golang在使用RSA中使用私钥加密公钥解密中遇到的问题,以及寻找的解决方案进行阐述,希望可以帮助到大家! 附上: 喵了个咪的博客:w-blog.cn gorsa-Github地址:https://github.c
喵了个咪233
2018/03/02
4.4K0
[Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
公钥与私钥
鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
cxuan
2022/04/02
1.6K0
公钥与私钥
图解公钥与私钥
在学习ssh时,一定有不少人对公钥和私钥产生过不解。在搜索公钥跟私钥的理解时,发现了这篇有趣的图解小文章,与大家共享。
TimothyJia
2019/11/12
1.8K0
图解公钥与私钥
生成多个 SSH-Key 、生成多个公钥和私钥
会有提示,让输入存放 Key 的文件名,我输入了 test.rsa。(文件存在的话,可选择覆盖。不存在会自动创建。)
微风-- 轻许--
2019/12/20
2.9K0
生成多个 SSH-Key 、生成多个公钥和私钥
RSA的公钥私钥
非对称加密使用的是RSA算法,所谓的非对称,指的是,加密时使用的秘钥和解密时使用的秘钥是不一样的。也就是说RSA有一对秘钥,其中一个是公钥,另一个是私钥,一个用于加密,一个用于解密。
赵哥窟
2022/04/02
2.5K0
RSA的公钥私钥
科普|以太坊私钥存储文件
以太坊的私钥文件存储于数据目录(datadir指向或默认目录)下,对应的目录为keystore。所有的私钥文件都经过加密之后存储于此目录下。
程序新视界
2022/05/06
1.3K0
科普|以太坊私钥存储文件
Ruby OpenSSL 私钥伪造脚本
前段时间的openssl heartbleed 让我们心惊胆战的过了几天。 从用户数据泄露到 OpenSSL周边产品,从服务端到客户端, 从https 私钥泄露到 openvpn 、openssh 、sftp 等私钥泄露。很多地方我们无能为力。 太多的用户都认为https 就是安全的了, 在此之前也有各种各样的中间人攻击出现 下面我也贴段代码给大家看看。是 Ruby OpenSSL 的私钥伪造。 为了社会的和谐,具体用法我就不说了。能看懂的直接拿去用… require 'rubygems' requir
FB客服
2018/02/02
7860
加密,防止网站证书私钥泄露
黑客就可以构建假冒的钓鱼网站,借助DNS劫持,将用户引导到假网站上面去,可窃取用户的口令等敏感信息;或者黑客执行中间人攻击。
用户U2
2022/06/02
1.1K0
加密,防止网站证书私钥泄露
公钥私钥的那点事儿
生成秘钥参考官网:https://docs.open.alipay.com/291/105971
IT茂茂
2020/03/05
3.7K1
公钥私钥的那点事儿
pfx证书获取私钥「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145038.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/27
1K0
php中的公钥和私钥
最近公司业务需要用到公钥和私钥,之前接触的很少,不是很了解,刚刚上网了解了下.发现很多地方都要用到加密.有对称加密算法( DES,AES)[加密和解密都使用一个密钥]和不对称加密算法(RSA).这里说的是RSA(非对称加密算法). RSA就涉及到公钥和私钥.
仇诺伊
2018/09/12
1.5K0
php中的公钥和私钥
点击加载更多

相似问题

Foreach循环在php中不能正常工作

128

foreach循环数组承诺不返回

212

如何使函数在JavaScript中返回承诺?

39

在foreach循环结束时返回承诺

11

Foreach循环不能正常工作

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文