javascript - 错误:'list' 未定义 no-undef 'route' 未定义 no-undef
问题描述
我正在使用铁路 api 构建 Web 应用程序,在提交列车号时我试图显示数据但出现上述错误。实际上,我在获取数据时使用了 if else 条件。
下面是代码。
import React, { Component } from "react";
export default class TrainRoute extends Component {
constructor(props) {
super(props);
this.state = { trainNumber: "", trainRouteList: "" };
this.onChange = this.onChange.bind(this);
this.onSubmitForm = this.onSubmitForm.bind(this);
}
onChange(e) {
this.setState({ [e.target.id]: e.target.value } );
}
onSubmitForm(e) {
e.preventDefault();
fetch(
`https://api.railwayapi.com/v2/route/train/${
this.state.trainNumber
}/apikey/sch9lj34uy/`
)
.then(res => res.json())
.then(data => {
this.setState({ trainRouteList: data }, () =>
console.log(this.state.trainRouteList)
);
});
this.setState({ trainNumber: "" });
}
render() {
const { trainRouteList } = this.state;
if (!trainRouteList) {
const list = <div>No Trains Details to display</div>;
const route = <div>No Routes to display</div>;
} else {
const list = (
<div>
<table>
<tbody>
<tr>
<td>Train Name :</td>
<td> {trainRouteList.train.name} </td>
</tr>
<tr>
<td>Train Number :</td>
<td> {trainRouteList.train.number} </td>
</tr>
<tr>
<td>Class :</td>
<td>
{trainRouteList.train.classes.map(trainClass => (
<span key={trainClass.code}>{trainClass.code},</span>
))}{" "}
</td>
</tr>
</tbody>
</table>
</div>
);
const route = trainRouteList.route.map(routeInfo => (
<table>
<tbody>
<tr>
<td>Station :</td>
<td> {routeInfo.station.name} </td>
</tr>
<tr>
<td>Departure Time :</td>
<td> {routeInfo.schdep} </td>
</tr>
<tr>
<td>Arrival Time :</td>
<td> {routeInfo.scharr} </td>
</tr>
</tbody>
</table>
));
}
return (
<div>
<div className="container">
<form
onSubmit={this.onSubmitForm}
className="col-md-8 col-md-offset-4"
>
<div className="row">
<div className="col-md-3">
<input
type="number"
className="form-control input-lg"
placeholder="Train Number"
id="trainNumber"
value={this.state.trainNumber}
onChange={this.onChange}
/>
</div>
<div className="col-md-1">
<button type="submit" className="btn btn-warning btn-lg">
Check Route
</button>
</div>
</div>
</form>
</div>
<div className="card card-fluid">
<div className="container">
{list}
<h3>Train Route</h3>
{route}
</div>
</div>
</div>
);
}
}
在渲染方法中的列表和路由处出现错误。谁能告诉我为什么在尝试所有可能的解决方案时会出现此错误
解决方案
这是因为list
和route
是块级变量,您正试图在块之外访问它们。
解决方案是,在外面定义这些变量,然后更新里面的值if
并else
阻塞,这样我们就可以访问render
方法内部的任何地方。像这样:
render() {
const { trainRouteList } = this.state;
let list, route;
if (!trainRouteList) {
list = <div>No Trains Details to display</div>;
route = <div>No Routes to display</div>;
} else {
list = ....;
route = ....;
}
推荐阅读
- python - 如何分隔列表中的变量:返回字母数字或数值
- python - 找不到模块“...Python38\lib\site-packages\lightgbm\lib_lightgbm.dll”
- r - 为什么 adabag 中的预测误差是离散的?
- javascript - GoogleAppsScript 的字符串解析器
- ruby - rbenv 在 tmux 中没有得到正确的版本
- c++ - 将 String 转换为 Epoch 一遍又一遍地返回常量值
- python - 为什么主窗体中的创建按钮不起作用?
- python - Django 模型 - 一对多或多对多
- node.js - 如何同时使用后端和前端的文件?
- activemq - 使用 amqp 协议模拟 Apache ActiveMq