博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React-Native自定义单选radio
阅读量:4085 次
发布时间:2019-05-25

本文共 891 字,大约阅读时间需要 2 分钟。

项目上需要实现如下的效果,两个方式只能选择一种,选中一个另一个取消选中



然后翻了下RN的组件,并没有这个;最后只得自己写,先上最终效果图



好了,撸起袖子就是干!

第一步:根据点击事件,变换圆圈背景状态

1)制作空心圆圈

宽高一致,然后设置borderRadius为宽或高的一半,现在已经是一个圆了;然后,设置borderWidth和borderColor,控制边缘线的颜色和宽度;最后的代码如下

radius为圆圈的半径,可以自己指定;


2)如何通过点击,变换背景颜色

通过自定义属性checked来决定设不设置指定背景



在onPress里我们自定义了一个_pressed函数,用来接收父层级组件传递过来的回调函数



这里的id和onCheck都是自定义的属性,在父层级使用;每次点击,最后都会修改checked的值,之后会触发后父组件会重新render,由此会再触发我们自定义的checkbox重新render,然后,我们的checkbox就会变不同的背景

第二步:实现只能选中一个,彼此状态互斥

让我们先看看父组件中是如何使用这个checkbox的




这个CircleBox就是我们自定义的checkbox;有id,onCheck,radius, bgc, checked这五个属性,都可以通过props取到;

我们在父层级的component的构造方法中,声明了一个flag:1,两个circlebox的checked初始目标值分别为1和2,一般和该目标值分别和id一一对应;

最开始,第一个checkbox的checked值为true,默认选中状态;当我们点击了第二个checkbox的时候,从checkbox里我们拿到该id,通过回调函数传回父层级component,然后将flag修改为该id,即当前的flag变为2,那么checkbox重新render的时候,第一个checked状态变为false,第二个变为true;我们看到的就是,第一个被取消选中,第二个被选中;

部分代码如下:

子组件中:checkbox


父组件中:使用者


这样,我们就实现了自定义组件的互斥效果。

转载地址:http://rurni.baihongyu.com/

你可能感兴趣的文章
RS纠删码
查看>>
reed solomon编码实践
查看>>
纠删码数据中心的最佳修复层:从理论到实践
查看>>
排队论---一般服务时间 M/G/1 模型
查看>>
为什么对高斯分布的方差的极大似然估计是有偏的?
查看>>
TensorFlow分布式采坑记
查看>>
【神经网络】变分自编码大杂烩
查看>>
为程序员写的Reed-Solomon码解释
查看>>
分布式系统下的纠删码技术之Erasure Code
查看>>
【NPC】23、有向汉密尔顿回路规约到无向汉密尔顿回路
查看>>
最小生成树的两种方法(Kruskal算法和Prim算法)
查看>>
2020-11-22
查看>>
2020-11-30
查看>>
Note: Clay Codes: Moulding MDS Codes to Yield an MSR Code
查看>>
Clay Codes — 从生成矩阵的角度来看
查看>>
数据挖掘笔记 - 支持向量机基础
查看>>
图像的上采样(upsampling)与下采样(subsampled)
查看>>
不均衡样本的处理方式
查看>>
如何确定最佳训练数据集规模?
查看>>
在机器学习中,你需要多少训练数据?
查看>>