2017-04-04 2 views
0

in meiner index.js Datei eine Funktion aufrufen Ich habe diese:reagieren von ReactDOM.render

const store = createStore(
    combineReducers({ 
     i18n: i18nReducer 
    }), 
    applyMiddleware(thunk) 
); 
syncTranslationWithStore(store) 
store.dispatch(loadTranslations(translationsObject)); 
store.dispatch(setLocale('de')); 

mit diesem Code die Standardsprache Greman eingestellt ist. Jetzt will ich einen Button in ReactDOM.render machen, wo ich kann chang die languge, bestenfalls mit einem stahet (de/en)

Was ich getan habe ist folgende:

function changeLanguage() { 
    function handleClick(e) { 
     e.preventDefault(); 
     store.dispatch(setLocale('de')); 
    } 
} 

und die in dem ReactDOM

<Router history={hashHistory}> 
     <div> 
      <div className="sidebararound"> 
       <div className="sidebar"> 
        <ul> 
         <li><a className="fa fa-language fa-2x" onClick={this.changeLanguage.handleClick.bind()} aria-hidden="true"></a></li> 

Aber das funktioniert nicht. Ich habe eine weiße Seite. Wo ist mein Fehler?

Danke

+2

denke ich, das Problem hier ist 'this.changeLanguage.handleClick.bind()', change kein Objekt ist, versuchen Sie mit 'Funktion handelt (e) { e.preventDefault(); store.dispatch (setLocale ('de')); } 'und' onClick = {this.handleClick.bind (this)} ' –

+0

ist in der Nähe. Vielen Dank. Funktion ist in Ordnung. Aber ich muss das onClick-Ereignis ändern in: 'onClick = {handleClick}' – Felix

Antwort

2

Es ist immer eine gute Übung, die Ereignisse im Konstruktor zu binden.

constructor(props) { 
    super(props); 
    this.handleClick = this.handleClick.bind(this) 
    .... 
} 

handleClick(e){ 
    e.preventDefault(); 
    store.dispatch(setLocale('de')); 
} 

und in der Render-Methode:

<Router history={hashHistory}> 
     <div> 
      <div className="sidebararound"> 
       <div className="sidebar"> 
        <ul> 
         <li><a className="fa fa-language fa-2x" onClick={this.handleClick} aria-hidden="true"></a></li> 
Verwandte Themen