Javascript 如何更改react select的ValueContainer以使缩小不会引入奇怪的行为?
我用ValueContainer修改了一个multi-react select组件,这样,如果选择了多个选项,则只会显示一个选项,括号中是额外选择的选项数。代码如下所示:Javascript 如何更改react select的ValueContainer以使缩小不会引入奇怪的行为?,javascript,reactjs,webpack,react-select,Javascript,Reactjs,Webpack,React Select,我用ValueContainer修改了一个multi-react select组件,这样,如果选择了多个选项,则只会显示一个选项,括号中是额外选择的选项数。代码如下所示: ValueContainer = ({ children, getValue, ...props }) => { let values = getValue(); let valueLabel = ""; if
ValueContainer = ({ children, getValue, ...props }) => {
let values = getValue();
let valueLabel = "";
if (values.length > 0) valueLabel += props.selectProps.getOptionLabel(values[0]);
if (values.length > 1) valueLabel += ` (${values.length})`;
// Keep standard placeholder and input from react-select
let childrenToRender = React.Children.toArray(children).filter((child) => ['Input', 'DummyInput', 'Placeholder'].indexOf(child.type.name) >= 0);
return (
<components.ValueContainer {...props}>
{!props.selectProps.inputValue && valueLabel }
{ childrenToRender }
</components.ValueContainer>
);
};
customStyles = {
valueContainer: (provided, state) => ({
...provided,
textOverflow: "ellipsis",
//maxWidth: "90%",
//whiteSpace: "nowrap",
overflow: "hidden",
display: "initial"
})
};
//inside render()
const employeeFilter = (
<div className="multi-select col-6 col-md-3 filter-element btn">
<span className="filter-label">Filter by employee(s)</span>
<Select
options={this.props.employeeProps.employeeData}
onChange={this.handleEmployeeChange}
value={selectedEmployee}
isMulti={true}
inputId='clickableInput'
components={{
ValueContainer
}}
closeMenuOnSelect={false}
hideSelectedOptions={false}
styles={customStyles}
isSearchable={false}
/>
</div>
);
ValueContainer=({children,getValue,…props})=>{
让value=getValue();
让valueLabel=“”;
如果(values.length>0)valueLabel+=props.selectProps.getOptionLabel(值[0]);
如果(values.length>1)valueLabel+=`(${values.length})`;
//保留标准占位符和react select中的输入
让childrenToRender=React.Children.toArray(Children).filter((child)=>['Input','DummyInput','Placeholder'].indexOf(child.type.name)>=0);
返回(
{!props.selectProps.inputValue&&valueLabel}
{childrenToRender}
);
};
自定义样式={
valueContainer:(已提供,状态)=>({
假如
textOverflow:“省略号”,
//最大宽度:“90%”,
//空白:“nowrap”,
溢出:“隐藏”,
显示:“首字母”
})
};
//内部渲染()
const employeeFilter=(
按员工筛选
);
ValueContainer和customStyles是在React组件之前定义的,它在我的开发机器上运行良好。但是,在生产过程中,它不能正常工作:
- 单击下拉列表外部不会关闭它(与在开发人员计算机上一样)
- 占位符文本几乎不可见(该区域的高度很小)
谢谢你的帮助 你弄明白了吗?