有没有一种方法可以在用户点击之前显示react native picker的占位符。想法是拥有一个选择器,上面写着“国籍”,一旦您点击并选择了您的国家,它就会呈现所选国家。我希望在选择器中不必将“国籍”作为可用选项。
有没有一种方法可以在用户点击之前显示react native picker的占位符。想法是拥有一个选择器,上面写着“国籍”,一旦您点击并选择了您的国家,它就会呈现所选国家。我希望在选择器中不必将“国籍”作为可用选项。
将第一个子项放置为 <Picker.Item value='' label='占位文本...' />
我不确定这是正确的方法。
<Picker selectedValue={locals.value}
onValueChange={value => {
if (value != "0")
this.pickerValueChange(value)
// so it won't care if header is selected...
}}>
<Picker.Item label="Select Type" value="0" />
<Picker.Item label="Diesel" value="Diesel" />
<Picker.Item label="Gas" value="Gas" />
<Picker.Item label="Electricity" value="Electricity" />
</Picker>
pickerValueChange 函数:
pickerValueChange = val => {
// state change or whatever you want to perform on picker update
}
您可以使用 NativeBase 的选择器。
1. 运行:
npm i native-base --save
2. 将其导入为:
import {Picker} from 'native-base';
3. 用途:
<Picker
placeholder="Start Year" // yipeee, placeholder
iosIcon={<Ionicons name="ios-arrow-down" />} // right icon
selectedValue={this.state.selected_id} // your selected item value
style={{
// your styles
}}
// onValueChange={this.onValueChange.bind(this)} // use it the way it suites you
onValueChange={(v)=>this.setState({selected_id:v})} // use it the way it suites you
>
<Picker.Item label="Val 1" value="1" />
<Picker.Item label="Val 2" value="2" />
<Picker.Item label="Val 3" value="3" />
</Picker>
我也一直在寻找这个答案,最终自己解决了。以下是我的解决方案,希望能帮到其他人。
const isPlaceholder = (value) => {
return value == "";
}
如果所选选项的值为空,则使用样式styles.placeholder。否则,我们只是使用普通样式(styles.picker)。
<Picker
selectedValue={gender}
style={
isPlaceholder(gender) ? (styles.placeholder) : (
styles.picker
)}
onValueChange={(itemValue, itemIndex) => setGender(itemValue)}
<Picker.Item color="grey" label="Choose Gender..." value="" />
// the first option is grey in the
// picker to make it more like a title
<Picker.Item label="Male" value="male" />
<Picker.Item label="Female" value="female" />
</Picker>
占位符和值的样式
const styles = StyleSheet.create({
placeholder: {
height: 50, width: '100%',
color: "grey", // PLACE HOLDER COLOR
},
picker: {
height: 50, width: '100%',
color: "blue", // VALUE COLOR
},
)}
...
const [selectedValue, setValue] = useState(0)
const values = ['Your placeholder', 'Option A', 'Option B', 'Option C']
....
<Picker
mode="dropdown"
selectedValue={selectedValue}
onValueChange={(itemValue) => setValue(itemValue)}
>
{values
.filter((value, index) => selectedValue === 0 ? value : index === 0 ? false : value)
.map((value, index) => (
<Picker.Item label={value} value={value} key={index} />
))}
</Picker>