如何在语义反应下拉列表中使用onChange方法

时间:2018-01-02 16:13:26

标签: javascript reactjs semantic-ui-react

有人可以帮我解决如何在下拉列表中使用onChange(语义UI反应)。我正在阅读文档,但我仍然没有得到它。它确实有onChange道具。

onChange(event: SyntheticEvent, data: object)

我该如何使用它?就像,我有方法dropdownmethod()

编辑 - 实施了建议,但它没有奏效。我认为在你的建议中,你并没有绑定这个功能。但是,我绑定了该功能。

  onChangeFollower(event,data){

    console.log("on change follower",data.text)

  }

  render() {
    console.log("this.props",this.props)
    var onChangeFollower = this.onChangeFollower.bind(this)

    return (
      <div>
        <h2>project settings are here</h2>
        <h2>Add new Member</h2>

        <Dropdown onChange={onChangeFollower}
        placeholder='Select Member'
        fluid search selection options={arr} />

        <h2>List of members</h2>
        {lr}

      </div>

4 个答案:

答案 0 :(得分:7)

如文档中所述,您只需要传递方法的引用,然后您将获得2个参数:

  1. 原生事件

  2. 所选选项的对象

  3. Here is a running example

    这是一段代码片段(它使用CDN但会抛出一些调试警告,所以请忽略它们)

    &#13;
    &#13;
    const { Dropdown } = semanticUIReact;
    
    const languageOptions = [
      { key: 'eng', text: 'English', value: 'eng' },
      { key: 'spn', text: 'Spanish', value: 'spn' },
      { key: 'rus', text: 'Russian', value: 'Russian' },
    ]
    
    class App extends React.Component {
    
      constructor(props) {
        super(props);
        this.state = {
          searchQuery: '',
          selected: null
        }
      }
    
      onChange = (e, data) => {
        console.log(data.value);
        this.setState({ selected: data.value });
      }
    
      onSearchChange = (e, data) => {
        console.log(data.searchQuery);
        this.setState({ searchQuery: data.searchQuery });
      }
    
      render() {
        const { searchQuery, selected } = this.state;
        return (
          <div>
            <Dropdown
              button
              className='icon'
              fluid
              labeled
              icon='world'
              options={languageOptions}
              search
              text={searchQuery}
              searchQuery={searchQuery}
              value={selected}
              onChange={this.onChange}
              onSearchChange={this.onSearchChange}
            />
          </div>
        );
      }
    }
    
    ReactDOM.render(<App />, document.getElementById('root'));
    &#13;
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.9/semantic.min.css"/>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/semantic-ui-react@0.77.1/dist/umd/semantic-ui-react.min.js"></script>
    <div id="root"></div>
    &#13;
    &#13;
    &#13;

    修改
    作为您的评论的后续。

      

    我检查了一些例子。即使在我输入内容时,它也不会显示给我   控制台中的任何内容

    当搜索输入发生变化时,您不是在谈论您所谈论的onChange select。 您可以将onSearchChange与相同的参数一起使用。 (我已经更新了这个例子)

答案 1 :(得分:1)

我已实现如下

反应钩子函数如下所示,如果您愿意,也可以通过handleOnChange作为道具

const RenderDropdown = ({optionsArray}) => {

   const handleOnChange = (e, data) => {
      console.log(data.value);
   }

   return (
     <Dropdown
        placeholder='Please select'
        fluid
        selection
        options={optionsArray}
        onChange={handleOnChange}
      />
   );
}

options数组如下

const optionsArray = [
  {
    key: 'male',
    text: 'Male',
    value: 'male',
    image: { avatar: true, src: 'https://semantic-ui.com/images/avatar/small/elliot.jpg' },
  },
  {
    key: 'female',
    text: 'Female',
    value: 'female',
    image: { avatar: true, src: 'https://semantic-ui.com/images/avatar/small/stevie.jpg' },
  }
]

答案 2 :(得分:0)

使用onChange事件检测下拉列表中的更改

onSearchChange={(e, v) => {
        changeMethod(e, v)
}}

使用onSearchChange事件检测搜索输入

  onSearchChange={(e, v) => {
           searchMethod(e, v)
    }}

,您必须在页面顶部将searchMethod和changeMethod定义为const。

答案 3 :(得分:-1)

以下是您的工作代码:

onChangeFollower(event, data){
    console.log("on change follower",data.text)
  }

render() {
    console.log("this.props",this.props)
    return (
      <div>
        <h2>project settings are here</h2>
        <h2>Add new Member</h2>

        <Dropdown onChange={this.onChangeFollower}
        placeholder='Select Member'
        fluid search selection options={arr} />

        <h2>List of members</h2>
        {lr}

      </div>
    )
}