在React JS中试图实现谷歌翻译,并在我的脚本文件中包含翻译组件。
Googletranslate.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;
Adminlogin.js :
import GoogleTranslate from '../Applicant/GoogleTranslate';
我使用<GoogleTranslate />
在Adminlogin.js文件中使用此组件。
并在我的文件中包含该组件,当我登录该站点并在注销后,当我导航到主页时,有两种语言栏。
感谢任何帮助。
答案 0 :(得分:0)
因为在this.googleTranslateElementInit上下文中找不到正确的答案。
您可以在构造函数中绑定函数:
constructor(props) {
super(props);
this.googleTranslateElementInit = this.googleTranslateElementInit.bind(this);
}
或 在类中使用箭头功能绑定
googleTranslateElementInit = () => {
...
}
希望它会对您有所帮助:)
答案 1 :(得分:0)
在功能组件中尝试一下效果很好
const SamplePage = () => {
const googleTranslateElementInit = () => {
new window.google.translate.TranslateElement({ pageLanguage: 'en', layout: window.google.translate.TranslateElement.FloatPosition.TOP_LEFT }, 'google_translate_element')
}
useEffect(() => {
var addScript = document.createElement('script');
addScript.setAttribute('src', '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit');
document.body.appendChild(addScript);
window.googleTranslateElementInit = googleTranslateElementInit;
}, [])
return (
<div>
<h2 className="title gx-mb-4"><IntlMessages id="sidebar.samplePage"/></h2>
<div id="google_translate_element"></div>
<div className="gx-d-flex justify-content-center">
<h4>Start building your app. Happy Coding!</h4>
</div>
</div>
);
};
export default SamplePage