javascript - Material UI Autocomplete Chip 多线
问题描述
我正在使用 Material UI Autocomplete 组件,并希望拥有多线芯片。我正在使用芯片来显示一些文本,该文本中最多可以有 10 个单词。我知道这不是芯片的预期用途,但这通常非常适合我的 UI,所以我想坚持使用它们。
也就是说,在移动设备(例如 iPhone 8)上,大约 10 个单词的芯片会显示类似“前几个单词...”的内容,其中将出现省略号而不是文本的其余部分。
我已经研究过使用该renderTags
属性(使用 Typography 元素为芯片标签使用自动换行)并尝试了该属性,但使用该属性没有取得任何进展。有没有人有任何建议/代码片段让他们开始工作?
解决方案
我想出了怎么做。这是多线芯片工作的示例代码(https://codesandbox.io/s/material-demo-eg6mb?file=/demo.tsx:332-1082)。允许这种多行功能起作用的关键特性是将芯片的高度设置为 100% 并为标签使用 Typography 元素whitespace: normal
:
<Autocomplete
multiple
id="fixed-tags-demo"
options={top100Films}
getOptionLabel={option => option.title}
defaultValue={[top100Films[6], top100Films[13], top100Films[0]]}
renderTags={(value, getTagProps) =>
value.map((option, index) => (
<Chip
label={<Typography style={{whiteSpace: 'normal'}}>{option.title}</Typography>}
{...getTagProps({ index })}
disabled={index === 0}
style={{height:"100%"}}
/>
))
}
style={{ width: 300 }}
renderInput={params => (
<TextField
{...params}
label="Fixed tag"
variant="outlined"
placeholder="Favorites"
/>
)}
/>
推荐阅读
- javascript - 在使用makeStyles的材质ui中,是否可以编写一个仅在元素同时具有两个类时才适用的css规则?
- shiny - 有没有办法判断 sliderInput 是否相对于初始值移动?
- python - 如何从 SymPy 分段对象中提取函数?
- python-3.x - python中set、list、SortedSet等容器的通用超类
- sql - SQL 查询的 HAVING 子句能否仅使用聚合函数?
- arduino - 在 ESP32 上使用 ASyncUDP 将 packet.data() 保存为字符串
- facebook-graph-api - Graph API 不为某些用户返回电子邮件
- javascript - 如果解析中的字段为空,为什么键不存在?
- htmlpurifier - htmlpurifier nofollow 仅适用于生成的链接
- python - 如何将 sklearn 管道存储在字典中?