【问题标题】:Programmatically select an item in Dropdown in Semantic-UI-React以编程方式在 Semantic-UI-React 的下拉菜单中选择一个项目
【发布时间】:2018-01-04 23:11:56
【问题描述】:

我使用 Semantic-UI-React 创建了一个下拉列表,让用户选择颜色。

代码如下。

import React, { Component } from 'react';
import { Dropdown } from 'semantic-ui-react';

const colorOptions = [{
  text: 'red',
  value: 'red'
}, {
  text: 'blue',
  value: 'blue'
}, {
  text: 'custom',
  value: 'custom'
}];

const Foo = () => (
  <Dropdown
    placeholder='color'
    search
    selection
    options={colorOptions} />
)

export default Foo

假设当前选择的颜色是红色。现在用户点击custom。然后会出现一个带有更多颜色的对话框。对话框中有两个按钮。确定并取消。

我想要的是,当用户单击Cancel 时,所选颜色将恢复为前一个颜色red,而不是custom。可以用 Semantic-UI-react 完成吗?

【问题讨论】:

    标签: javascript html reactjs semantic-ui semantic-ui-react


    【解决方案1】:

    您可以为此使用state

    我假设您有另一个组件正在呈现您的 Foo 组件(因为您将其代码粘贴为无状态函数)

    1. Dropdown 组件中使用onChange,以便跟踪当前值。如果您需要更多关于onChange 工作原理的信息,请查看他们的docs

    例如:

    const Foo = (onChange, value) => (
      <Dropdown
        placeholder='color'
        search
        selection
        options={colorOptions}
        onChange={onChange}
        value={value}
      />
    )
    
    1. 在每个onChange 上,将此值保存在状态中,并保留前一个值的副本。由于setStateasynchronous,您可以轻松地这样做:

    例子:

    handleChange(event, data) {
      this.setState(prevState => ({
        previousValue: prevState.value,
        value: data
      }))
    }
    
    1. 当您单击“取消”按钮时,只需将下拉菜单的值恢复为之前的值。

    例子:

    onCancel() {
      this.setState(prevState => ({
        value: prevState.previousValue
      }))
    }
    
    1. render 上始终将value 传递给Foo 组件

    例子:

    <Foo onChange={handleChange} value={this.state.value} ... />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 2021-11-19
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多