我尝试在react-native中使用RadioButton库,但是我的变量/参数名称存在一些问题,我不确定我是否理解不足。
这里是示例代码:
constructor () {
super()
this.state = {
types2: [{label: 'param1', value: 0}, {label: 'param2', value: 1}, {label: 'param3', value: 2},],
value2: 0,
value2Index: 0,
}
}
<RadioForm
formHorizontal={true}
animation={true}
>
{this.state.types2.map((obj, i) => {
var that = this;
var is_selected = this.state.value2Index == i;
return (
<View key={i} style={styles.radioButtonWrap}>
<RadioButton
obj={obj}
index={i}
onPress={(value, index) => {
this.setState({value2:value})
this.setState({value2Index: index});
}}
/>
</View>
)
})}
</RadioForm>
[很多事情我不知道。这是我的实际对象:
data: [{name: 'param1', number: 12}, {name: 'param2', number: 34}, {name: 'param3', number: 45},],
[首先,如果我尝试用数据替换'types2'对象,则必须将'name'参数重命名为'label'。这是否暗示您的对象中的名称应为“ label”?我不能保留“姓名”吗?
与'value'参数相同,如果我的数据中没有value参数,则将永远不会分配value2,为什么?为什么这行不通?:
onPress={(number, index) => {
this.setState({value2:number})
}}
我对象中的'number'参数只是一个带有名称(不是id)的数据链接,但是我应该在我的对象中添加唯一的id吗?
最后,在onPress函数中,我不太了解'index'变量。 onPress = {(arg1,arg2)}的第二个参数将始终是生成的索引吗?
而且,在这段代码中,我不了解从未使用过的'value'参数的含义。我们应该将它用作RadioButton函数中的关键参数,而不要使用'i',对吧?
感谢您的帮助
您可以像这样设置type2状态
this.state = {
types2: data.map(item => ({label: item.name, value:item.number})),
value2: 0,
value2Index: 0,
}
如果从响应中获取数据,则使用this.setState。
在onPress函数中,您将获得选定的值和选定的索引。第一个arg为选定值,第二个arg为选定索引。