javascript - 当 props 改变时渲染组件,否则不显示
问题描述
我有这个输出组件,当它从父组件获取道具时应该渲染它。
我怎样才能做到这一点?现在,当我单击一个按钮但没有调用 getTranslate 函数时,它会呈现。在调试器中,我可以看到该组件具有所需的道具,它只是不运行我的 getTranslate 函数
import React, { useState } from "react";
import Axios from "axios";
const Output = (props) => {
const [output, setOutput] = useState(null);
const [url, setUrl] = useState(null);
const getUrl = (language, text) => {
console.log("GetURL ran with: ", language, text);
let url = "";
switch (language) {
case "yoda":
url =
" https://api.funtranslations.com/translate/yoda.json?text=" + text;
break;
case "valyrian":
url =
"https://api.funtranslations.com/translate/valyrian.json?text=" +
text;
break;
case "sith":
url =
"https://api.funtranslations.com/translate/sith.json?text=" + text;
break;
case "shakespeare":
url =
"https://api.funtranslations.com/translate/shakespeare.json?text=" +
text;
break;
case "pirate":
url =
"https://api.funtranslations.com/translate/pirate.json?text=" + text;
break;
case "minion":
url =
"https://api.funtranslations.com/translate/minion.json?text=" + text;
break;
case "lolcat":
url =
"https://api.funtranslations.com/translate/lolcat.json?text=" + text;
break;
case "klingon":
url =
"https://api.funtranslations.com/translate/klingon.json?text=" + text;
break;
case "hacker":
url =
"https://api.funtranslations.com/translate/hacker.json?text=" + text;
break;
case "dothraki":
url =
"https://api.funtranslations.com/translate/dothraki.json?text=" +
text;
break;
default:
break;
}
setUrl(url);
};
const getTranslate = () => {
getUrl(props.language, props.text);
const axios = require("axios");
axios.get(function (respone) {
console.log("Here comes response from api call: ", respone);
return respone.contents.translated;
});
};
return (
<div>
<textarea placeholder="Translated..." value={{ getTranslate }}></textarea>
</div>
);
};
export default Output;
解决方案
您需要将翻译功能移至“onChange”功能或“onBlur”功能(如果您希望在用户点击后翻译文本)。此外,您传递给 onChange 和 onBlur 的函数应该管理翻译功能的异步性质。
推荐阅读
- javascript - dijit 日历在道场中仅显示从当天开始的 52 周
- php - 尝试在 Magento 1.7 DB 中查询客户“公司”价值
- java - 无法为 JDK 选择主目录,因为 IntelliJ 看不到它?
- c - 在while循环中重新扫描和分配变量
- azure - Azure 服务总线关联筛选器的效率如何?
- python - 如何更改 pytest 生成的参数
- c++ - 确保与 std::hardware_constructive_interference_size 共享的正确方法
- c# - 如何使用 AJAX JQuery ASP .NET MVC 4 将 FormCollection 和文件传递给控制器
- sql - 如何从增量年份值中获取旧值?
- enums - 为什么在只需要一个字节时,Rust 使用两个字节来表示这个枚举?