- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将一些股票数据传递给名为 Chart 的组件。到目前为止,图表组件仅返回置于此代码顶部的状态中的“测试”值。
它没有设置状态并将新数据传递给图表组件,而是给出错误“TypeError: (intermediate value)(...) is not a function”。
我认为 getTimeSeries 函数需要在渲染方法之外定义,因为该函数需要更新状态。如果是的话,它去哪里了?
我想我需要 .bind(this) 或具有绑定(bind)功能的东西。我不知道。
export default class Main extends React.Component {
state = {
currentUser: null,
instr: null,
instrData: ['test']
};
constructor(props) {
super(props)
}
componentDidMount() {
const { currentUser } = firebase.auth()
this.setState({ currentUser, instr: 'NFLX' });
}
render() {
const { currentUser } = this.state;
var getTimeSeries = function(instr){
if(instr!=null){
const key = 'myKey';
var url = `https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=${instr}&apikey=${key}`;
console.log(url);
axios.get(url)
.then((response) => {
(()=>{ console.log(response.data["Time Series (Daily)"]) })
// THIS IS NOT UPDATING STATE:
(()=>{ this.setState({ instrData: response.data["Time Series (Daily)"] }) })
(()=>{ console.log(this.state) })
})
.catch((error) => console.log(error));
};
}; // end getTimeSeries
return (
<View style={styles.container}>
<Text>
Hi {currentUser && currentUser.email}!
{ getTimeSeries(this.state.instr) }
</Text>
<Chart
instrument={this.state.instr}
instrData={this.state.instrData}
/>
<VotingButtons instrument={this.state.instr} />
</View>
);//end return
}// end render
}//end class
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center'
}
})
最佳答案
恐怕有很多东西不在这里。以下是对大问题的快速概述:
render()
方法内触发 axios 调用。成功的 axios 调用将导致状态更新(您的 setState()
调用),这将导致另一个 render()
调用 - React 组件在其状态时自动重新渲染变化。所以你正在设置一个无限循环。在 componentWillMount()
生命周期方法中执行此操作可能不太危险,但是...你的 axios promise 回调都很奇怪,我不明白你想要做什么。
axios.get(url)
.then((response) => {
到目前为止一切都很好,然后我们......
(()=>{ console.log(response.data["Time Series (Daily)"]) })
好吧,这就是让我困惑的地方。我期望在这里看到的只是:
console.log(response.data["Time Series (Daily)"]);
您没有这样做,而是声明了一个执行此操作的函数。但是您还没有调用该函数,您只是声明了它并将其留在那里。而且因为您还没有将它分配给任何东西,所以它并没有真正做太多事情。
// THIS IS NOT UPDATING STATE:
(()=>{ this.setState({ instrData: response.data["Time Series (Daily)"] }) })
(()=>{ console.log(this.state) })
这些行也不会执行任何操作,因为您实际上并未执行 this.setState()
或 console.log()
,您正在声明将执行的函数他们:
foo(); //a call to function foo, no args
() => { foo(); } //a function that calls function foo with no args
希望这有帮助!
关于javascript - 使用从 Alphavantage 返回的 axios 对象更新 ReactJS 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50900587/
我最近开始探索 Alpha Vantage。我想知道是否有一个端点可以列出在交易所交易的所有股票代码。 提前致谢。 最佳答案 查看 alpha vantage 文档: https://www.alph
我无法找到不同符号和交易所的文档,我能够弄清楚 TSE 或 TSE 作为加拿大交易所的后缀。我只是想知道如何检索以下证券的价格:https://web.tmxmoney.com/quote.php?q
我试图通过调用 alphavantage 的 API 来获取一家公司的 JSON。对于某些公司数据即将到来,对于某些公司,它失败了。即将提供数据的公司 - TCS、INFY、MSFT数据失败的公司 -
我无法找到不同符号和交易所的文档,我能够弄清楚 TSE 或 TSE 作为加拿大交易所的后缀。我只是想知道如何检索以下证券的价格:https://web.tmxmoney.com/quote.php?q
这个对 NASDAQ Composite 的 API 调用曾经起作用。现在它只返回一个空的 JSON。 {} .没有错误信息。 https://www.alphavantage.co/query?fu
我对 API 服务比较陌生,并尝试构建一个仪表板,我可以在其中从 Alphavantage API 获取数据。 我试图通过创建一个列表并将索引传递给我的 API 调用来同时获取 3 个符号。我为每个符
我正在尝试测试 Node 中的 alphavantage 模块,但它一直抛出此错误: import Util from './lib/util'; ^^^^^^ SyntaxError: Cannot
我正在使用 python 及其框架 flask 构建前端后端项目。该项目需要库存数据。在 Yahoo's Api 停止工作之前我使用它,现在我正在使用 Alpha Vantage API。它运行良好,
我无法从 Alpha Vantage TIME_SERIES_DAILY、TIME_SERIES_DAILY_ADJUSTED 或 TIME_SERIES_INTRADAY 获取任何 NASDAQ 数
这个问题已经有答案了: Jquery load() only working in firefox? (2 个回答) Read local XML with JS (5 个回答) 已关闭 5 年前。
网站 AlphaVantage 有 JSON 格式可供下载: https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED
一些基本的东西 - 使用 Alpha Vantage 运行 python 3.x(Jupyter Notebook) 我正在运行这个简单的代码。一切正常,我遇到的唯一问题是它没有在 x 轴上显示日期。
我在使用 Alpha Vantage API 时遇到了一个问题,每次我尝试发送一个 API 请求时,符号(代码)有一个“.”。在其中,API 调用返回无效的 API 调用错误。 我如何克服这个问题?
我需要将一些股票数据传递给名为 Chart 的组件。到目前为止,图表组件仅返回置于此代码顶部的状态中的“测试”值。 它没有设置状态并将新数据传递给图表组件,而是给出错误“TypeError: (int
我是一名优秀的程序员,十分优秀!