在React-select v2中旋转箭头指示器
我在我的项目中使用带有样式化组件的React Select v2,并且当菜单打开时,我需要能够将箭头指示器上下颠倒,这在v1中受支持。
我设法做到这一点:
css` &.react-select__control--is-focused {
& .react-select__indicators {
& .react-select__dropdown-indicator {
transform: rotate(180deg);
}
}
}
`;
问题是,如果我按箭头打开菜单并再次单击以将其关闭,则箭头将保持上下颠倒,因为选择仍处于焦点状态,这在UIX方面感觉有些奇怪。
是否有根据菜单状态旋转它的正确方法?我在文档中寻找了一些东西,但是找不到。
也许我想念它,如果有人可以指出正确的方向,那就太好了!
谢谢!
回答:
因此,根据劳拉的回答,我的解决方案是使用onMenuClose
和onMenuOpen
设置样式化组件中属性的状态。
const indicatorStyle = (props: StyledSelectProps & DropdownProps<{}>) => css` & .react-select__indicators {
& .react-select__dropdown-indicator {
transition: all .2s ease;
transform: ${props.isOpen && "rotate(180deg)"};
}
}
`;
此函数在样式化组件的css内部调用。
然后在组件中调用样式化组件,然后控制状态:
export class Dropdown<TValue> extends React.Component<DropdownProps<TValue>> { public state = { isOpen: false };
private onMenuOpen = () => this.setState({ isOpen: true });
private onMenuClose = () => this.setState({ isOpen: false });
public render() {
const { ...props } = this.props;
const { isOpen } = this.state;
return (
<StyledSelect {...props} isOpen={isOpen} onMenuOpen={this.onMenuOpen} onMenuClose={this.onMenuClose} />
);
}
}
有点令人费解,但现在可以使用。
以上是 在React-select v2中旋转箭头指示器 的全部内容, 来源链接: utcz.com/qa/403555.html