0
我有我要顯示在登錄組件:TypeScript:是否可以將接口的實例傳遞給反應組件?
import * as React from 'react';
import * as Localization from '../Modules/Localization';
import ILanguageChangedObservor from '../Interfaces/ILanguageChangedObservor';
class Login extends React.Component {
private observor : ILanguageChangedObservor;
constructor(languageObservor : ILanguageChangedObservor) {
super();
this.observor = languageObservor;
}
public currentLanguage : Localization.Localization.LocalizedStrings = new Localization.Localization.LocalizedStrings(navigator.language.split('-')[0].toString());
public changeBrowserLanguage(event: React.FormEvent<HTMLSelectElement>) {
this.currentLanguage = new Localization.Localization.LocalizedStrings(event.currentTarget.value);
this.forceUpdate();
}
render() {
var englishStrings = new Localization.Localization.LocalizedStrings("en");
var germanStrings = new Localization.Localization.LocalizedStrings("de");
var frenchStrings = new Localization.Localization.LocalizedStrings("de");
var spanishStrings = new Localization.Localization.LocalizedStrings("es");
return (
<div>
<p>
<select onChange={ e => this.changeBrowserLanguage(e) }>
<option value="en">{englishStrings.languageInNative}</option>
<option value="de">{germanStrings.languageInNative}</option>
<option value="fr">{frenchStrings.languageInNative}</option>
<option value="es">{spanishStrings.languageInNative}</option>
</select>
</p>
{this.currentLanguage.welcome}<br />
</div>
);
}
}
export default Login;
當語言被設置在登錄時,告訴這將是父頁面的觀測器設計是我想要做的是:
主畫面:
import * as React from 'react';
import './App.css';
import Login from './Screens/Login';
import * as Localization from './Modules/Localization';
import ILanguageChangedObservor from './Interfaces/ILanguageChangedObservor';
const logo = require('./logo.svg');
class App extends React.Component implements ILanguageChangedObservor {
public update(toLanguage : Localization.Localization.LocalizedStrings) {
}
render() {
return (
<div className="App">
<div className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h2>Welcome to React</h2>
</div>
<Login />
</div>
);
}
}
export default App;
我期待,我可以通過父母的情況下進入登錄成分,這樣的事情:
<Login languageObservor=this />
但似乎這不是一個可用的選項。是否有可能至少將一個回調函數傳遞給一個組件?即時通訊新的反應,所以仍然試圖解決侷限性。感謝您的幫助提前。