自己写一个 react-native 的 checkbox

react-native 默认不能支持 checkbox,内置的 CheckBox 组件只能在安卓下工作。看了一堆第三方组件,都需要借助 Image 或 Icon 来实现。在 stackoverflow 看到一个帖子之后,觉得用 View 来实现最简单,而且不需要加载额外任何资源。

import { View } from 'react-native'
import { PureComponent } from 'react'

export class CheckboxButton extends PureComponent {
  render() {
    const { color = '#333333', checked, onChange, style = {} } = this.props
    return (
        <View style={{
          height: 24,
          width: 24,
          borderWidth: 2,
          borderColor: color,
          alignItems: 'center',
          justifyContent: 'center',
          ...style,
        }} onResponderRelease={onChange}>
          {
            checked ? <View style={{
              height: 12,
              width: 12,
              backgroundColor: color,
            }}/> : null
          }
        </View>
    )
  }
}
export default CheckboxButton

这个道理和通过 div 来画一个三角形一样,也是通过边框、背景组合得到。基于这种方法 RadioButton 就是增加一个 borderRadius,也是非常容易。