【发布时间】:2019-04-01 15:45:31
【问题描述】:
我想创建一个按钮组件,无论其尺寸如何,它都会自动具有圆角。
如您所知,要实现圆角,实现它的一种方法是将边框半径指定为按钮高度的一半。
我实现的方式是在自定义组件中我使用onLayout这样的函数:
onLayout(event: LayoutChangeEvent) {
const { height } = event.nativeEvent.layout;
this.setState({ borderRadius: height / 2 });
}
问题是按钮最初会在屏幕上显示为一个矩形,并且仅在一毫秒后,它会圆角导致闪烁。
我的猜测是 onLayout 在组件渲染后被调用。
如何实现这一点?谢谢!
【问题讨论】:
-
介意分享您的按钮组件和样式吗?
-
如果你想在onLayout之前设置borderRadius那么你可以使用this.setState({borderRadius:50});在 componentDidMount() 方法中。但是如果你想设置borderRadius“onLayout”那么你可以使用1000ms的超时。让我知道它是否有效。
-
你也可以将初始的borderRadius 样式设置为一个超高的数字。它永远不会“超过圆角”,但无论大小,都会显得圆润。
标签: react-native