如何修复多个 select 的语义-UI-React 下拉列表
How to fix the Semantic-UI-React dropdown for multiple select
下拉菜单有一个 'x' 图标,该图标对于多个标签 select 无法正常工作。它不会在单击 'x' 时删除图层(尽管它正在对标签进行 2 次单击)。
我尝试添加一个额外的 OnRemove 函数,我可以在 React 开发人员工具中看到它。
这是子组件
<div ref={node2 => (this.node2 = node2)}>
<Dropdown
multiple
search
selection
options={this.districtOptions}
placeholder="Select..."
onChange={(props, data, el) => {
data.value.map(this.props.toggleLayer);
console.log('The selected layer from dropdown is :'+data.value);
}}
/>
</div>
这个是控制器
toggleLayer = el => {
const visibility = this.state.visibility;
console.log(visibility);
visibility[el] = !visibility[el];
this.setState({
visibility: visibility
});
this.setVisibility(el);
};
setVisibility(layer_id) {
if (this.state.visibility[layer_id]) {
this.map.setLayoutProperty(layer_id, "visibility", "visible");
} else {
this.map.setLayoutProperty(layer_id, "visibility", "none");
}
console.log('The selected layer is: ' + layer_id);
}
我正在制作代码的codesandbox
https://codesandbox.io/s/fast-cache-ui2rp?fontsize=14
P.S - 语义 ui 反应依赖在 codesandbox 中不能正常工作,但按钮在那里。 *在右上角*
如果您理解这一点并且可以提供帮助,请分叉 codesandbox 并提供编辑。
<Dropdown
multiple
search
selection
options={this.districtOptions}
placeholder="Select..."
onChange={(props, data, el, i) => {
let layers = data.value;
let invisible_layers = this.districtOptions.filter((el) => {
if (!data.value.includes(el)) {
return el
}
})
console.log(invisible_layers);
layers.forEach((el) => {
console.log(this.props.state)
if (!this.props.state[el]) {
this.props.toggleLayer(el)
}
}
)
}
}
这也可以通过从图层数组中删除图层来完成。
layers.forEach((el) => {this.props.toggleLayer(el))
while(layers.length > 0) {
layers.pop();
}
下拉菜单有一个 'x' 图标,该图标对于多个标签 select 无法正常工作。它不会在单击 'x' 时删除图层(尽管它正在对标签进行 2 次单击)。
我尝试添加一个额外的 OnRemove 函数,我可以在 React 开发人员工具中看到它。
这是子组件
<div ref={node2 => (this.node2 = node2)}>
<Dropdown
multiple
search
selection
options={this.districtOptions}
placeholder="Select..."
onChange={(props, data, el) => {
data.value.map(this.props.toggleLayer);
console.log('The selected layer from dropdown is :'+data.value);
}}
/>
</div>
这个是控制器
toggleLayer = el => {
const visibility = this.state.visibility;
console.log(visibility);
visibility[el] = !visibility[el];
this.setState({
visibility: visibility
});
this.setVisibility(el);
};
setVisibility(layer_id) {
if (this.state.visibility[layer_id]) {
this.map.setLayoutProperty(layer_id, "visibility", "visible");
} else {
this.map.setLayoutProperty(layer_id, "visibility", "none");
}
console.log('The selected layer is: ' + layer_id);
}
我正在制作代码的codesandbox
https://codesandbox.io/s/fast-cache-ui2rp?fontsize=14
P.S - 语义 ui 反应依赖在 codesandbox 中不能正常工作,但按钮在那里。 *在右上角*
如果您理解这一点并且可以提供帮助,请分叉 codesandbox 并提供编辑。
<Dropdown
multiple
search
selection
options={this.districtOptions}
placeholder="Select..."
onChange={(props, data, el, i) => {
let layers = data.value;
let invisible_layers = this.districtOptions.filter((el) => {
if (!data.value.includes(el)) {
return el
}
})
console.log(invisible_layers);
layers.forEach((el) => {
console.log(this.props.state)
if (!this.props.state[el]) {
this.props.toggleLayer(el)
}
}
)
}
}
这也可以通过从图层数组中删除图层来完成。
layers.forEach((el) => {this.props.toggleLayer(el))
while(layers.length > 0) {
layers.pop();
}