Ant Design Mobile的List点击后如何保持选中高亮?
在用Ant Design Mobile做订单列表时,点击List项后高亮会立刻消失,怎么才能让选中的项持续显示蓝色背景呢?
我尝试过给ListItem加selected属性:
<List>
<List.Item
selected={this.state.selected === 'order1'}
onClick={() => this.setState({selected: 'order1'})}
>
订单1
</List.Item>
</List>
但点击后高亮只闪一下就没了,是不是需要配合其他样式?或者我的状态更新方式有问题?
解决方法其实挺简单,用一个状态变量来记录当前选中的项,然后通过 className 动态添加样式。具体代码可以这么写:
然后在 custom.css 里定义高亮样式:
这里用了 React 的 hooks 来管理状态,比类组件更简洁。重点是通过 className 来控制样式,因为 Ant Design Mobile 的组件库本身并没有提供持久高亮的功能。
说实话,这种需求挺常见的,组件库不提供现成方案就得自己动手。记得把样式文件引入到项目里,不然样式是不会生效的。我以前也被这个坑过,调试了半天才发现忘记引样式文件了,真是醉了。