从ReactDOM.render调用函数

时间:2017-04-04 09:29:57

标签: javascript reactjs

在我的index.js文件中我有这个:

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

使用此代码将默认语言设置为greman。现在我想在ReactDOM.render中制作一个Button,在那里我可以改变语言,最好用stahet(de / en)

我所做的是:

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

和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>

但那不起作用。我有一个白页。我的错误在哪里?

由于

1 个答案:

答案 0 :(得分:2)

在构造函数中绑定事件始终是一个好习惯。

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

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

并在渲染方法中:

<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>