如何在React JS中获取多个选中选项的值?

10 浏览
0 Comments

如何在React JS中获取多个选中选项的值?


         
         

这个组件来自于https://github.com/skratchdot/react-bootstrap-multiselect

handleChange() 函数内应该写什么?

0
0 Comments

问题的出现原因:在React JS中,当需要获取多个选中选项的值时,可以使用refs来访问DOM元素,但是在原生的JavaScript中,获取多个选中选项的值需要通过遍历以及判断是否被选中来实现。因此,可能会出现代码冗长、不直观的问题。

解决方法:通过使用ES6的语法,可以更简洁地实现获取多个选中选项的值。可以使用以下代码来实现:

let selected = [...this.refs.select]
  .filter(option => option.selected)
  .map(option => option.value)

这样就可以获取到所有选中选项的值了。

另外,也可以使用`Array.from`方法来替代`[...this.refs.select]`:

let selected = Array.from(this.refs.select)
  .filter(option => option.selected)
  .map(option => option.value)

或者使用`selectedOptions`属性来获取选中选项的值:

let selected = [...this.refs.select.selectedOptions].map(o => o.value)

以上就是解决该问题的方法。

0
0 Comments

在React JS中获取多个选中选项值的方法是通过在组件中设立一个名为selectedItems的状态。然后,onChange回调函数会接收elementchecked两个参数,从Bootstrap Multiselect文档中获取。Element具有val()方法,该方法返回分配给选项的值。

因此,handleChange可以按以下方式实现:

handleChange: function (element, checked) {
    var newSelectItems = _.extend({}, this.state.selectItems);
    newSelectItems[element.val()] = checked;
    this.setState({selectItems: newSelectItems})
},
getInitialState: function () {
     return {selectItems: {}};
}

通过这种方式,每次单击一个元素时,它的checked属性都会保存在组件状态中。如果您需要根据MultiSelect选定的值进行任何更改,这将非常方便。

请注意,上述代码需要使用UnderscoreLodash库。这是因为React无法合并嵌套对象,如此处所回答的那样。

0
0 Comments

问题的原因是react-bootstrap-multiselect没有提供获取当前选中项的API,所以需要直接从DOM中查询。解决方法是使用React.findDOMNode来获取DOM节点,然后使用querySelectorAll方法获取所有的选项,再使用filter方法筛选出选中的选项,最后使用map方法获取选中选项的值。

如果使用jQuery,可以简化代码为使用children('option:selected')方法来获取选中的选项,然后使用map方法获取选中选项的值。

0