首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >React JS,从API取数时未保存变量名

React JS,从API取数时未保存变量名
EN

Stack Overflow用户
提问于 2021-10-11 22:01:30
回答 1查看 40关注 0票数 0

我得到的问题是,从API获取的数据没有保存到变量中。请看fearvalue,它是稍后被调用的,它的值是一个空字符串。

APY组件

代码语言:javascript
运行
AI代码解释
复制
export let fearvalue = [];

export const fearAndGreed = () => {
    // 1. Create a new XMLHttpRequest object   
    let bitcoinAPY = new XMLHttpRequest();
    // 2. Configure it: GET-request for the URL /article/.../load    
    bitcoinAPY.open("GET", "https://api.alternative.me/fng/?limit=10&date_format=us", false)    
    bitcoinAPY.onload = () => {    
        const data = JSON.parse(bitcoinAPY.response);    
        /*const saveStaticDataToFile = () => {    
          let blob = new Blob(['Welcome'],    
          {type: 'text/plain;charset=utf-8'});    
          saveStaticDataToFile(blob, "static.txt")    
        }*/    
        console.log(data)    
        fearvalue = data.data[0];    
    }
    // 3. Send the request over the network
    bitcoinAPY.send();
}

window.addEventListener('load', fearAndGreed)

正在此组件中调用fearvalue,但它是一个空值。有人能帮我把数据保存到这个变量中吗?

导入'./App.css';

代码语言:javascript
运行
AI代码解释
复制
import './Apy_TAPI';
import './Bitcoin Fear&Greed';
import { DataFormatting } from './DataFormatting.js';
import { fearvalue } from './Bitcoin Fear&Greed';

    import './App.css';
import './Apy_TAPI';
import './Bitcoin Fear&Greed';
import { DataFormatting } from './DataFormatting.js';
import { fearvalue } from './Bitcoin Fear&Greed';

function App() {
  const test1 = "test1"
  console.log(fearvalue)

  return (
    <div className="App">
      <header className="App-header">
        <p>
          Bitcoin analyst tool
        </p>
      </header>
      <div className='Text'>
        <h1>
          <img className="Image" src="https://alternative.me/crypto/fear-and-greed-index.png" alt="Latest Crypto Fear & Greed Index" />
        </h1>
        <h2>
          https://bitinfocharts.com/pl/bitcoin/address/1P5ZEDWTKTFGxQjZphgWPQUpe554WKDfHQ <br />
          <br />
          {fearvalue} <br />
        </h2>
      </div>
    </div>
  );
}
export default App;
EN

回答 1

Stack Overflow用户

发布于 2021-10-13 22:32:14

您需要以适当的方式保存响应。在React.js中,您可以使用useState创建状态变量并在其中设置响应。

首先,您需要将响应保存在状态变量中:

代码语言:javascript
运行
AI代码解释
复制
import React, {useState} from 'react';

export const fearAndGreed = () => {  
    const [fearValue, setFearValue] = useState() // initialize with proper value according to your data type, it could be a empty array [] or an object {}.

    let bitcoinAPY = new XMLHttpRequest();   
    bitcoinAPY.open("GET", "https://api.alternative.me/fng/?limit=10&date_format=us", false)    
    bitcoinAPY.onload = () => {    
        const data = JSON.parse(bitcoinAPY.response);    
        setFearValue(data.data[0])  // ------> set the fearValue here
    }
    bitcoinAPY.send();
}

window.addEventListener('load', fearAndGreed)

到目前为止,第一部分已经完成。但是您需要在另一个组件中使用fearValue。为了实现这一点,有一些解决方案,比如使用像ReduxContextApi这样的Global State Manager。如果没有它们,您的实现将很棘手,因为您不能使用lifting state up技术,因为您没有在父组件(App)中将fearAndGreed作为子组件使用。

在这种情况下,您可以使用fearAndGreed函数实现自定义钩子。由于该函数在页面加载后调用一次,因此可以在组件挂载后通过调用API来实现此功能。

让我们以这种方式使用当前的fearAndGreed函数创建一个自定义钩子:

代码语言:javascript
运行
AI代码解释
复制
import {useEffect, useState} from 'react';

export const useFearAndGreed = () => {
  const [fearValue, setFearValue] = useState();

  useEffect(() => {
    let bitcoinAPY = new XMLHttpRequest();   
    bitcoinAPY.open("GET", "https://api.alternative.me/fng/?limit=10&date_format=us", false)    
    bitcoinAPY.onload = () => {    
        const data = JSON.parse(bitcoinAPY.response);    
        setFearValue(data.data[0])  // ------> set the fearValue here
    }
    bitcoinAPY.send();
  }, [])

  return fearValue;
}

解释:

通过一些更改,钩子函数变成了一个自定义的钩子useFearAndGreed。应用程序接口将在组件挂载后调用useEffect (带有一个空的依赖项数组)。钩子将在每次更改时返回fearValue

现在,是时候在App组件中使用这个自定义钩子了:

代码语言:javascript
运行
AI代码解释
复制
function App() {
 const fearValue = useFearAndGreed()

  return (
    <div>
     {fearValue}
    </div>
  );
}
export default App;

注意:我删除了App组件中实现的其他部分以简化它。你应该在里面包含你自己的实现。

现在,每次挂载App组件时,useFearAndGreed都会被调用并返回fearValue,它可以保存在一个常量fearValue中,以便在div元素中使用。

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

https://stackoverflow.com/questions/69535754

复制
相关文章
Docker Daemon API未授权
Docker Remote API是一个取代远程命令行界面(RCLI)的REST API,当该接口直接暴漏在外网环境中且未作权限检查时,攻击者可以通过恶意调用相关的API实现远程命令执行
Al1ex
2022/09/07
9800
Docker Daemon API未授权
取随机数
  常用于去随机数的函数为rand()(在stdlib.h头文件中,不同的编译器可能有不同),但是实际在使用这个函数时却发现每次程序运行产生的数都是一样的,这是什么原因呢?其实是它的用法不正确.   
用户2038589
2018/09/06
1.8K0
取随机数
从 React 源码彻底搞懂 Ref 的全部 api
而且还可以使用 useImperativeHandle 自定义传给父元素的 ref:
神说要有光zxg
2023/02/01
9740
1475: 方格取数
1475: 方格取数 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 578  Solved: 309 [Submit][Status][Discuss] Description 在一个n*n的方格里,每个格子里都有一个正整数。从中取出若干数,使得任意两个取出的数所在格子没有公共边,且取出的数的总和尽量大。 Input 第一行一个数n;(n<=30) 接下来n行每行n个数描述一个方阵 Output 仅一个数,即最大和 Sample Input 2 1 2 3
HansBug
2018/04/11
6060
【番外】 React中使用ArcGIS JS API 4.14开发
本文主要介绍如何在React项目中使用ArcGIS JS API进行开发,文中使用的JS API是目前最新版本的ArcGIS JS API 4.14,主要是在React项目demo中用JS API实例化了一张二维地图。
X北辰北
2022/02/21
1.6K0
【番外】 React中使用ArcGIS JS API 4.14开发
django 保存数据时重写?
需求: class Article(Model.model): title = '' title_hash = hash(title) 实现方式1: def save(self, *args, **kwargs): self.title_hash = hash(self.title) super(Article, self).save(*args, **kwargs) 实现方式2: def save_title_hash(self): title_hash = has
BigYoung小站
2020/05/05
9960
Docker API未授权命令执行
Docker Swarm是Docker的集群管理工具,它将Docker主机池转变为单个虚拟Docker主机,能够方便的进行docker集群的管理和扩展。Docker Swarm使用标准的Docker API通过2375端口来管理每个Docker节点,Docker API是一个取代远程命令行界面(RCLI)的REST API。当Docker节点的2375端口直接暴露并未做权限检查时,存在未授权访问漏洞,攻击者可以利用Docker API执行任何操作,包括执行Docker命令,创建、删除Docker以及获得宿主机权限等。
谢公子
2023/09/01
1.4K0
Docker API未授权命令执行
Docker API未授权漏洞复现
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全
2021/08/05
3.2K0
Docker API未授权漏洞复现
从网络下载图片,保存,并用 UIImageView 从保存中显示
//从网络下载图片 -(UIImage ) getImageFromURL:(NSString )fileURL { NSLog(@"执行图片下载函数"); UIImage * result; NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]]; result = [UIImage imageWithData:data]; return result; } //将所下载的图片保存到本地
用户8671053
2021/10/29
6660
react新版api
提示API快要不支持了,按照https://reactjs.org/link/switch-to-createroot进行更换`api`
阿超
2023/01/08
5160
react新版api
react hooks api
hooks API是 React 16.8的"新增"功能(16.8更新于2年前)。官网是这么说的:
一粒小麦
2020/06/16
2.7K0
react hooks api
React 组件 API
合并nextState和当前state,并重新渲染组件。setState是React事件处理函数中和请求回调函数中触发UI更新的主要方法。
陈不成i
2021/07/29
1.5K0
react核心api
react从16年12月开始,已经学了有2年多了。react引导了作者找到了第一份比较专职的前端工作。react 2014年横空出世,以其革命性的写法,带动了前端行业的产业升级,尽管比较“重”,却也是笔者至今最喜欢的前端框架,没有之一。
一粒小麦
2019/07/18
6870
利用爬虫爬取图片并保存
在工作中,有时会遇到需要相当多的图片资源,可是如何才能在短时间内获得大量的图片资源呢?
算法与编程之美
2023/08/22
3070
利用爬虫爬取图片并保存
Js 取模运算、取商、取整方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152062.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/24
8.8K0
Js 取模运算、取商、取整方法
Emacs 保存 gpg 文件时卡住
在最近的 gnupg 版本中,出现了 breaking changes 导致 Emacs 保存文件时会卡住,涉及的版本有:
飞驰的西瓜
2023/09/06
2110
Emacs 保存 gpg 文件时卡住
从源码的角度再看 React JS 中的 setState
在上一篇手记「深入理解 React JS 中的 setState」中,我们简单地理解了 React 中 setState “诡异”表现的原因。 在这一篇文章中,我们从源码的角度再次理解下 setState 的更新机制,供深入研究学习之用。 源码的部分为了保证格式显示正常就截图了,查看源码点击对应的链接直接跳转至 GitHub 查看即可。 1. React 中的 setState 更新逻辑代码 在更新逻辑的部分,可以看到 React 会通过 判断当前的逻辑状态下是否需要进行批量更新。 如果不是,那么就直接进
企鹅号小编
2018/01/22
2.2K0
从源码的角度再看 React JS 中的 setState
JS中取余与取整
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127474.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/25
5.6K0
如何从0到1搭建自助取数平台(二):规划篇
导读:随着业务的进一步发展,秉承“人人用数据,时时用数据”的愿景,如何让运营、产品自主探索分析数据,并发现业务问题成为众多公司迫切需要解决的问题。本文将分享笔者搭建自助取数工作的规划篇。
万能数据的小草
2022/12/19
1.1K0
如何从0到1搭建自助取数平台(二):规划篇
点击加载更多

相似问题

从firebase取数时,react中没有更新表体

18

取NSManagedObject未保存

20

React js从url拉取数据

19

从Graph API拉取和保存信息

13

从服务器随机取数停止取数

117
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文