Bos*_*nov 8 javascript jsx reactjs react-select
我正在使用react-select中的CreatableSelect组件。现在,用户可以选择任意数量的项目,但我希望用户选择的项目不超过5个。如何限制可以选择的最大选项数?
<CreatableSelect
classes={classes}
styles={selectStyles}
textFieldProps={{
label: "Tags"
}}
options={suggestions}
components={components}
value={this.state.multi}
onChange={this.handleChange("multi")}
placeholder=""
isMulti
/>
Run Code Online (Sandbox Code Playgroud)
一个非常简单的方法是:
<Select
value={tags}
onChange={(v) => v.length < 4 ? setTags(v): null}
isMulti
name='tags'
options={options}
className='basic-multi-select'
classNamePrefix='select'
/>
Run Code Online (Sandbox Code Playgroud)
只需添加一个简单的三元检查来确定您想要多少个项目
我建议你使用自定义组件的组合Menu
和isValidNewOption
类似下面的代码:
// For this example the limite will be 5
const Menu = props => {
const optionSelectedLength = props.getValue().length || 0;
return (
<components.Menu {...props}>
{optionSelectedLength < 5 ? (
props.children
) : (
<div>Max limit achieved</div>
)}
</components.Menu>
);
};
function App() {
const isValidNewOption = (inputValue, selectValue) =>
inputValue.length > 0 && selectValue.length < 5;
return (
<div className="App">
<Creatable
components={{ Menu }}
isMulti
isValidNewOption={isValidNewOption}
options={options}
/>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
这里有一个活生生的例子。
这个想法是为了防止用户访问限制 X 之后的选项(示例中为 5),并防止enter
通过isValidNewOption
prop创建的键盘事件。
归档时间: |
|
查看次数: |
1252 次 |
最近记录: |