react-native - 反应原生选择器包装组件
问题描述
子组件
<View style={{flex:1}}>
<Picker
selectedValue={this.props.questions}
onValueChange={}//I do not know how to write here
// onValueChange={(value) => this.setState({questions1 :value})}
mode="dropdown"
style={{color:'#f00'}}
>
<Picker.Item label="1" value="1"/>
<Picker.Item label="2" value="2"/>
<Picker.Item label="3" value="3"/>
<Picker.Item label="4" value="4"/>
</Picker>
</View>
父组件
render() {
var items=[];
for (var i = 0; i < myData.length; i++) {
this.state["questions"+i]=1
items.push(
<SelectValue
questions={this.state['questions'+i]}>
</SelectValue>
)
}
return (
{items}
)
现在我不知道如何编写 onValueChange={}。我希望可以重用子组件(选择器)。So when the picker's value change the parent state also change, that what I want
解决方案
从父组件中,您可以将函数作为道具传递。
render() {
var items=[];
for (var i = 0; i < myData.length; i++) {
this.state["questions"+i]=1
items.push(
<SelectValue
onValueChange={(value) => this.setState({["questions"+i]:value})}
questions={this.state['questions'+i]}>
</SelectValue>
)
}
return ({items})
}
在子组件中
<View style={{flex:1}}>
<Picker
selectedValue={this.props.questions}
onValueChange={this.props.onValueChange}
mode="dropdown"
style={{color:'#f00'}}
>
<Picker.Item label="1" value="1"/>
<Picker.Item label="2" value="2"/>
<Picker.Item label="3" value="3"/>
<Picker.Item label="4" value="4"/>
</Picker>
</View>
推荐阅读
- python - Selenium webdriver 有时找不到元素
- java - 在 Primefaces 中使用 Galleria 进行 imageRotateAndResize
- ffmpeg - 如何使用ffmpeg组合两个复杂的命令?
- laravel - laravel 获取会话数据并按最新排序
- gmail - 允许其他用户为我的电子邮件设置 gmail 过滤器
- python - 如何在 Elasticsearch 中对术语聚合结果进行分页
- c - scanf 格式的输入不适用于扫描的第一个字符
- javascript - 在 Array of Array 中查找对象
- asp.net-core - 发布后的 Asp net core web app 运行时错误
- ios - 为什么我的 iOS 状态栏应该有一个白色区域