Reactjs 因此,I18React中的下一个反应性翻译
我在尝试使用React上的i18next进行反应式翻译时遇到问题 以下是重要文件: i18n/index.js Flags.jsxReactjs 因此,I18React中的下一个反应性翻译,reactjs,internationalization,translation,reactive,i18next,Reactjs,Internationalization,Translation,Reactive,I18next,我在尝试使用React上的i18next进行反应式翻译时遇到问题 以下是重要文件: i18n/index.js Flags.jsx import React, { Component } from 'react'; import { changeLanguage } from '../../../../i18n'; import './Flags.css'; export default class Flags extends Component { /** * Construc
import React, { Component } from 'react';
import { changeLanguage } from '../../../../i18n';
import './Flags.css';
export default class Flags extends Component {
/**
* Constructor.
*
* @param {any} props The components properties.
*/
constructor(props) {
super(props);
this.changeLang = this.changeLang.bind(this);
}
/**
* Changes the app's current language.
*
* @param {string} language The language code, i.e: 'en', 'es' or 'it'.
*/
changeLang(language) {
changeLanguage(language);
alert('language change: ' + language);
}
/**
* Renders this component.
*
* @returns {string} The components JSX code.
*/
render() {
return (
<li role="presentation">
<div className="flags">
<button onClick={ () => this.changeLang('en') }>
<span className="flag-icon flag-icon-us"></span>
</button>
<button onClick={ () => this.changeLang('es') }>
<span className="flag-icon flag-icon-es"></span>
</button>
<button onClick={ () => this.changeLang('it') }>
<span className="flag-icon flag-icon-it"></span>
</button>
</div>
</li>
);
}
}
import React,{Component}来自'React';
从'../../../../../i18n'导入{changeLanguage};
导入“/Flags.css”;
导出默认类标志扩展组件{
/**
*构造器。
*
*@param{any}支持组件属性。
*/
建造师(道具){
超级(道具);
this.changeLang=this.changeLang.bind(this);
}
/**
*更改应用程序的当前语言。
*
*@param{string}language语言代码,即:“en”、“es”或“it”。
*/
更改语言{
改变语言;
警报(“语言更改:”+语言);
}
/**
*渲染此组件。
*
*@返回{string}组件JSX代码。
*/
render(){
返回(
this.changeLang('en')}>
this.changeLang('es')}>
this.changeLang('it')}>
);
}
}
我认为语言的变化是有效的,但不是以反应的方式进行的,因为当我点击一个标志时,这种变化并没有反映在UI中。我怎样才能做到这一点呢?组件不会显示更新的语言,因为它不会重新呈现 正确的实现应该将新的道具传递给使用翻译的组件,但它们似乎不是 (…要更新组件,您需要将语言作为道具传递或保持其状态,并且在更改语言时组件将重新加载) 现在来看一下如何使用包装器组件 或供应商或类似机构 因为它不像示例中那样包装组件真的看看
import React, { Component } from 'react';
import { changeLanguage } from '../../../../i18n';
import './Flags.css';
export default class Flags extends Component {
/**
* Constructor.
*
* @param {any} props The components properties.
*/
constructor(props) {
super(props);
this.changeLang = this.changeLang.bind(this);
}
/**
* Changes the app's current language.
*
* @param {string} language The language code, i.e: 'en', 'es' or 'it'.
*/
changeLang(language) {
changeLanguage(language);
alert('language change: ' + language);
}
/**
* Renders this component.
*
* @returns {string} The components JSX code.
*/
render() {
return (
<li role="presentation">
<div className="flags">
<button onClick={ () => this.changeLang('en') }>
<span className="flag-icon flag-icon-us"></span>
</button>
<button onClick={ () => this.changeLang('es') }>
<span className="flag-icon flag-icon-es"></span>
</button>
<button onClick={ () => this.changeLang('it') }>
<span className="flag-icon flag-icon-it"></span>
</button>
</div>
</li>
);
}
}