【发布时间】:2021-09-15 04:20:15
【问题描述】:
即使我检查了 if(e.target.value === ""),但当 textarea 为空时,它会报错。
onFirstChange = async (e) => {
const response = await axios.get("https://translate.yandex.net/api/v1.5/tr.json/translate?key=" + key +
"&text=" +
e.target.value +
"&lang=en");
if (e.target.value === "") {
this.setState({
firstArea: "",
lastArea: "",
});
} else {
this.setState({
firstArea: e.target.value,
lastArea: response.data.text,
});
}
};
文本区域:
<textarea
className="form-control"
id="firstArea"
name="firstArea"
rows="5"
placeholder="Enter"
defaultValue={this.state.firstArea}
onKeyUp={this.onFirstChange}
></textarea>
<textarea
className="form-control"
id="lastArea"
name="lastArea"
rows="5"
placeholder=" "
defaultValue={this.state.lastArea}
onKeyUp={this.onLastChange}
></textarea>
错误:
获得 400
未捕获(承诺中)错误:请求失败,状态码为 400
【问题讨论】:
-
您可能以错误的方式调用您的 API 端点。见developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
-
当 textarea 不为空时,它不会给出错误并运行。
-
查看您的代码很难判断 textarea 中的值如何影响 API 调用。您的 API 端点是依赖于 textarea 中的值还是纯字符串。我认为您需要添加更多细节,以获得更好的响应。
-
但是无论目标值是否为空,您每次都在调用您的 API。
-
我正在使用 yandex 翻译 api。它取决于 textarea 中的值。
标签: javascript json reactjs api axios