Javascript ReactJS-onClick不调用function inside map()函数

Javascript ReactJS-onClick不调用function inside map()函数,javascript,reactjs,loops,dictionary,onclick,Javascript,Reactjs,Loops,Dictionary,Onclick,我是新手,不知道如何通过映射循环上的onClick调用内部函数。让我告诉你: const changeLang = lang => { i18n.changeLanguage(lang); }; 我有这个职能谁是负责让我的语言,如英语或葡萄牙语。我试图用下面的代码来改变语言,这取决于我从菜单中选择的菜单项。为此,我有以下代码: const languages = [ { value: 'pt', label: 'Portuguese', },

我是新手,不知道如何通过映射循环上的onClick调用内部函数。让我告诉你:

  const changeLang = lang => {
    i18n.changeLanguage(lang);
  };
我有这个职能谁是负责让我的语言,如英语或葡萄牙语。我试图用下面的代码来改变语言,这取决于我从菜单中选择的菜单项。为此,我有以下代码:

const languages = [
  {
    value: 'pt',
    label: 'Portuguese',

  },
  {
    value: 'en',
    label: 'English',
  }
];

...
{languages.map(option => (
    <MenuItem key={option.value} value={option.value} onClick={() => this.changeLang (option.value)}>
        {option.label}
    </MenuItem>
))}

问题是它不能进入我的函数changeLang,所以没有选择语言,根本没有效果。我尝试了console.log,但没有得到任何回报。我很确定问题出在onClick={=>this.changeLang option.value},但我不知道为什么。您能帮助我吗?

这是一个功能组件,所以您需要调用changeLang而不是This。changeLang

如果这是功能组件,请删除此关键字并直接调用changeLang函数

languages.map(option => (
    <MenuItem key={option.value} value={option.value} onClick={() => changeLang(option.value)}>
        {option.label}
    </MenuItem>
))

您在控制台中看到了什么类型的错误

我马上发现你的changeLang有一个可能的问题:你没有从中返回任何东西。仅当不使用大括号语法时,Arrow函数才具有隐式返回:

我也看到了这个错误:

this.changeLang (option.value)
应该是

this.changeLang(option.value)
函数调用与其参数之间没有空格


也许你可以尝试这些调查方法,和/或发布更多关于你的组件的详细信息。

这是一个功能组件吗?是的,我只是没有介绍所有代码,因为它对这个问题毫无用处。你能检查一下“this”是否有“changeLang”功能吗。您可以通过这个onClick={=>console.logthis.changeLang}来完成它。这是一个基于类的组件吗。。。什么都没有发生。你能详细说明什么都没有发生吗?当我点击菜单项时,什么都没有发生,比如没有操作没有控制台.log。它只是没有进入函数changeLang。您是否配置了react-I18Nextca?您是否可以在沙箱中复制问题并共享它?先生,没有发生任何错误先生,它只是没有调用函数changeLang。您是否也尝试过修复错误?正如其他人所提到的,我们需要看到整个组件以提供更多帮助。