javascript - 反应js谷歌翻译不起作用
问题描述
在 React JS 中尝试实现谷歌翻译,并在我的脚本文件中包含翻译组件。
谷歌翻译.js:
import React, { Component } from 'react';
class GoogleTranslate extends Component {
googleTranslateElementInit () {
//alert("test2")
/* eslint-disable no-new */
new window.google.translate.TranslateElement({pageLanguage: 'pt', layout: window.google.translate.TranslateElement.FloatPosition.TOP_LEFT}, 'google_translate_element')
}
componentDidMount() {
// alert("test")
var addScript = document.createElement('script');
addScript.setAttribute('src', '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit');
document.body.appendChild(addScript);
window.googleTranslateElementInit = this.googleTranslateElementInit;
}
render() {
return (
// <script type='text/javascript' src='//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit' />
<div id="google_translate_element"></div>
);
}
}
export default GoogleTranslate;
管理员登录.js:
import GoogleTranslate from '../Applicant/GoogleTranslate';
我正在使用 Adminlogin.js 文件中包含的这个组件<GoogleTranslate />
。
并将组件包含在我的文件中,当我登录网站和注销后,当我导航到主页时,有两个语言栏。
任何帮助表示赞赏。
解决方案
语言栏的重复或乘法是document.body.appendChild(addScript)
每次页面加载/呈现时调用的结果。
要解决此问题,请将插件初始化添加到您的public > index.html
文件中,如下所示:
<script src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit" async></script>
<script type="text/javascript">
function googleTranslateElementInit() {
new google.translate.TranslateElement(
{
pageLanguage: "en",
layout: window.google.translate.TranslateElement.InlineLayout.VERTICAL,
},
'google_translate_element'
);
}
</script>
然后,将您的GoogleTranslate
组件更改为
import React, { Component } from 'react';
class GoogleTranslate extends Component {
render() {
return (
<div id="google_translate_element"></div>
);
}
}
export default GoogleTranslate;
如果这对您有用,请投票。如果没有,请不要犹豫发表评论。干杯!
推荐阅读
- javascript - Ajax 不缓存请求
- javascript - 如何在 HTML 中使用 fs.writeFile(使用 node.JS)?
- vba - 将多个工作簿中的值复制并粘贴到另一个工作簿中的工作表/循环内粘贴值
- android - 如何返回共享首选项的值?
- php - 未定义属性:Illuminate\Http\RedirectResponse::$admin_id
- c# - 将图像转换为数组到图像时在 GDI+ 中发生一般错误
- c# - How to import different format Excel files into a SQL Server database
- c++ - C ++程序中多个位置的时间时间戳(0)
- reactjs - redux, normalizr, 访问存储 mapDispatchToProps
- java - 1 被添加到输出中,同时迭代地计算“e”的值