在ReactJS试图实现谷歌翻译,并包括翻译组件在我的脚本文件.
谷歌翻译.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';
我使用<GoogleTranslate />
来使用Adminlogin.js文件中包含的此组件。
并包括在我的文件的组成部分,当我登录到网站和注销后,当我导航到主页,有两个语言栏。
任何帮助都很感激。
6条答案
按热度按时间piok6c0g1#
在功能组件中尝试此操作,工作正常
cig3rfwq2#
语言栏的重复或倍增是由于每次加载/呈现页面时调用
document.body.appendChild(addScript)
。要解决此问题,请将插件初始化添加到
public > index.html
文件,如下所示:然后,将
GoogleTranslate
组件更改为如果这对你有用,请投赞成票。如果没用,请不要犹豫,留下评论。干杯!
6l7fqoea3#
因为在这个.googleTranslateElementInit上下文中找不到正确的。
您可以在构造函数中绑定函数:
或在类中使用箭头函数bind
r55awzrz4#
dly7yett5#
对于Next.js
jc3wubiy6#
saikrishna chowdhary解决方案为我工作