【问题标题】:Chosen and React选择和反应
【发布时间】:2016-09-16 20:25:47
【问题描述】:

我想在 react 中处理选定的事件,example 它是如何在纯 js 中工作的。

所以我为选择创建了反应组件:

@ChosenSelect = React.createClass
  propTypes:
    options: React.PropTypes.array

  componentWillMount: ->
    @setState
      selected: @props.value

  componentDidMount: ->
    select = $(ReactDOM.findDOMNode(@refs.select))

    $(select).chosen()
      .on('chosen:showing_dropdown', @props.onShowingDropdown)
      .on('chosen:hiding_dropdown', @props.onHiddingDropdown) 
      .change @props.onChange

  renderOption: (option) ->
    <option key={option.value} value={option.value}>{option.label}</option>

  renderSelectOptions: ->
    if @props.options
      ops = @props.options.map (option) =>
        if option.type == 'group'
          <optgroup label={option.name}>
            {
              option.items.map((item) =>
                @renderOption(item))
            }
          </optgroup>
        else
          @renderOption option

  render: ->
    selectProps = $.extend({}, @props, ref: 'select')
    <select {...selectProps} value={ @state.selected }>
      {@props.children}
      {@renderSelectOptions()}
    </select>

我如何使用这个组件:

<ChosenSelect className="form-chosen-select"
              ref="chosen"
              options={ @state.list }
              onShowingDropdown=@toggleFormState
              onHiddingDropdown=@toggleFormState
              onChange=@change />

但是onHiddingDropdown 阻止onChange 事件,如果我只使用onChange 而没有onHiddingDropdown 一切正常。也许有人遇到过类似的情况?

UPD。发现同样的问题:linkchange事件没有来,因为我改变了状态。

【问题讨论】:

  • 澄清你为什么需要onHiddingDropdown呢?
  • 用于添加/删除类,取决于选择的状态

标签: javascript jquery reactjs jquery-chosen


【解决方案1】:

我发现了这个技巧:

$(select).chosen()
  .on('chosen:showing_dropdown', @props.onShowingDropdown)
  .on('chosen:hiding_dropdown', @handleHiddingDropdown)
  .change @props.onChange

handleHiddingDropdown: ->
  setTimeout =>
    @props.onHiddingDropdown() if @props.onHiddingDropdown
  , 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2019-03-26
    • 2021-02-06
    • 1970-01-01
    相关资源
    最近更新 更多