如何在React JS中获取多个选中选项的值?
如何在React JS中获取多个选中选项的值?
这个组件来自于https://github.com/skratchdot/react-bootstrap-multiselect
handleChange() 函数内应该写什么?
问题的出现原因:在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)
以上就是解决该问题的方法。
在React JS中获取多个选中选项值的方法是通过在组件中设立一个名为selectedItems
的状态。然后,onChange
回调函数会接收element
和checked
两个参数,从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
选定的值进行任何更改,这将非常方便。
请注意,上述代码需要使用Underscore或Lodash库。这是因为React无法合并嵌套对象,如此处所回答的那样。