javascript - Bulma Select 表单元素 - 选择选项时如何检测 "select"或更改事件

标签 javascript reactjs bulma

我正在尝试使用 Select来自 Bulma 的表单元素,无法弄清楚最基本的问题...如何检测用户何时选择选项?我想在选择语言选择选项时调用一个函数来更改网站的语言,但不知道如何注册“选择”事件。

enter image description here

该元素工作得很好,可以在两种语言之间切换,但是我需要做什么来检测何时实际选择了其中一个选项?

<div className="navbar-item">
  <div className="select">
    <select>
      <option>English</option>
      <option>Chinese</option>
    </select>
  </div>
</div>

我尝试过使用 onChangeonClick 事件,但它们都不起作用,例如:

<div className="navbar-item">
  <div className="select">
    <select>
      <option onChange={() => changeLanguage('en')}>English</option>
      <option onChange={() => changeLanguage('cn')}>Chinese</option>
    </select>
  </div>
</div>

我是否需要为此创建单独的 React 状态变量并自己管理选择?

<小时/>

回答

能够将各种答案中的一些内容拼凑起来,让这个工作正常进行,我尝试更新答案,使其正确,但也为了社区的利益而发布在这里。

这是带有选择选项的 JSX:

    <div className="navbar-item">
      <div className="select">
        <select onChange={(e) => changeLanguage(e)}>
          <option value="en" id="en">English</option>
          <option value="cn" id="cn">中文</option>
        </select>
      </div>
    </div>

以及对应的更改语言函数:

    const changeLanguage = event => {
        i18n.changeLanguage(event.target.value);
      };        

最佳答案

您应该将 onChange 处理程序放在 select 元素上,而不是 option 上,这里是处理选项更改并更改状态的 react 代码

import React, { Component } from "react";

export default class App extends Component {
  state = {
    lang: "eng" // set english by default
  };

  onSelect = ev => {
    this.setState({ lang: ev.target.value });
  };

  render() {
    return (
      <div className="navbar-item">
        <div className="select">
          <select onChange={this.onSelect}>
            <option value="eng">English</option>
            <option value="ch">Chinese</option>
          </select>
        </div>
      </div>
    );
  }
}

关于javascript - Bulma Select 表单元素 - 选择选项时如何检测 "select"或更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60782417/

相关文章:

javascript - 带有 Ratchet 的 PHP WebSockets - 示例不起作用

javascript - 如何在单击按钮后将数据从一个组件发送到另一个组件 Vuejs

javascript - 使用 ReactJS 在表中渲染多个表行和多个表数据

javascript - Bulma:位于页面顶部时导航栏顶部的横幅

css - 使用 Bulma 将下拉列表附加到文本输入

vue.js - buefy表获取点击行的数据

javascript - 错误 : Failed to initialize react-native-reanimated library

javascript - 搜索和分页sql查询php

javascript - 如何在回调中从 React 组件访问 "this"

javascript - Next.js 在保存时重新加载