javascript - 如何在react js中监听另一个组件中的下拉值

标签 javascript reactjs react-redux dropdown onchange

我是 react 新手。我有一个下拉菜单,它为我提供了不同的语言来选择我想要共享给我的所有组件的语言,但我无法做到这一点。 到目前为止,我已经尝试了 localStorage 和 Context,但是每当我更改值时,我都看不到 App.js 中的更改。

这是我的组件

const RTL = () => {
const handleLanguageAction = lang => {
     console.log(lang , 'language')
   };

  return (
    <OptionsButton
  list={portalLanguages}
  float="right"
  helper="Please select any language"
  label="Language"
  action={handleLanguageAction}
    />
 );
};

这是我的 app.js

const App = ({ role }) => {
return (
<MuiThemeProvider theme={theme}>
  <MuiPickersUtilsProvider utils={MomentUtils}>
    <SnackbarProvider>
      <BrowserRouter>
        <div dir={DIR}>
          <Layout>
            <RouteFactory routes={RouteComponents} config={routesConfig} role={role} />
          </Layout>
        </div>
      </BrowserRouter>
    </SnackbarProvider>
  </MuiPickersUtilsProvider>
</MuiThemeProvider>
 );
};

我希望 app.js 监听下拉函数中的值变化,并且即使我刷新页面也应该保留该值。 有人能帮我吗?谢谢

最佳答案

您可以使用customEvent在RTL和App之间进行通信

RTL

const myEvent = new CustomEvent('language', { detail: { lang } });
document.body.dispatchEvent(myEvent);

App.js

document.body.addEventListener("language", (event) => {
  console.log(event.detail);
});

关于javascript - 如何在react js中监听另一个组件中的下拉值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61100652/

相关文章:

javascript - 当 Redux 连接状态改变时,有状态的 React-Native 功能组件不会重新渲染

javascript - 使用 Javascript 在客户端存储超过 5mb

jquery与另一个js冲突

reactjs - 当用户未通过身份验证时 react 闪烁的私有(private)路由

javascript - 部署到 firebase 托管的 ReactJS 应用程序在首次部署后未更新

javascript - 有没有办法在不调用 setParams (react-navigation) 的情况下重新渲染导航栏?

javascript - React - 错误 : App(. ..) : Nothing was returned from render. 这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null

.net - 在 .NET 桌面和浏览器之间共享 JavaScript 代码

javascript - 当索引器基于获取/设置时,Google Chrome 控制台无法正确显示类似数组的对象?

reactjs - 元素 : You cannot change the `stripe` prop after setting it 上不支持的 Prop 更改