javascript - 反应选择选项值改变变量数据
问题描述
我正在努力成为一名前端开发人员,所以我正在创建一个包含公司信息的项目。我试图在 YouTube 和这里找到,但我仍然无法理解。
我想使用 on Change 来显示结果,但是如何将选项值传递给变量?
import React, { Component } from "react";
class BusinessCard extends Component {
constructor(props) {
super(props);
this.state = {
loading: true,
company: null,
};
}
async componentDidMount() {
let companyCod = "MSFT"; // I want receive the option value here
let companyUrl =
"https://www.alphavantage.co/query?function=OVERVIEW&symbol=" +
companyCod +
"&apikey=YOUR-API-KEY";
let response = await fetch(companyUrl);
let data = await response.json();
this.setState({ company: data, loading: false });
}
render() {
if (this.state.loading) {
return <div>loading</div>;
}
return (
<div>
<select>
<option value="MSFT">MSFT</option>
<option value="AAPL">AAPL</option>
<option value="IBM">IBM</option>
</select>
<h1>Company: {this.state.company.Name}</h1>
<h1>Symbol: {this.state.company.Symbol}</h1>
</div>
);
}
}
解决方案
您可以将 置于countryCode
您的组件状态,并将componentDidMount
代码移动到一个单独的函数中,您可以在该函数中调用componentDidMount
以及在选择更改时调用该函数。
例子
import React, { Component } from "react";
export default class BusinessCard extends Component {
constructor(props) {
super(props);
this.state = {
loading: true,
company: null,
companyCode: "MSFT"
};
}
loadCompany = async (companyCode) => {
let companyUrl =
"https://www.alphavantage.co/query?function=OVERVIEW&symbol=" +
companyCode +
"&apikey=YOUR-API-KEY";
let response = await fetch(companyUrl);
let data = await response.json();
this.setState({ company: data, loading: false });
}
componentDidMount() {
this.loadCompany(this.state.companyCode);
}
handleChange = (e) => {
const companyCode = e.target.value;
this.setState({ companyCode });
this.loadCompany(companyCode);
};
render() {
if (this.state.loading) {
return <div>loading</div>;
}
return (
<div>
<select
value={this.state.companyCode}
onChange={this.handleChange}
>
<option value="MSFT">MSFT</option>
<option value="AAPL">AAPL</option>
<option value="IBM">IBM</option>
</select>
<h1>Company: {this.state.company.Name}</h1>
<h1>Symbol: {this.state.company.Symbol}</h1>
</div>
);
}
}
推荐阅读
- javascript - 如何解决 couchbase 5.1.0 中的文档修订冲突?
- django - 在多对一关系下,pizzas.html 上不显示比萨饼的名称 [Python 速成课程练习 18-8]
- c# - 我正在模拟请求但它显示为空?
- xslt - 如何中断页面序列以插入另一个页面序列
- rabbitmq - 队列镜像中未自动选择新主节点
- javascript - setState 没有设置状态,在 componentDidUpdate 中的获取请求后它没有按预期工作?
- c# - C# Win form Selenium 挂起
- cucumber - Cucumber Java8:为什么我会得到“PendingException:TODO:实现我”?
- d3.js - 如何对从外部数据生成的 d3 元素进行分组?
- reactjs - keyboardAvoidingView 在 react-native 中不起作用