React native 根据React Native中另一个选取器所做的选择重新呈现选取器项?
如何根据React Native中其他选取器所做的选择重新呈现选取器项 var选项=[“家”、“储蓄”、“汽车”、“女友”] var集群=[{item:“abc”,key:“Home”},{item:“def”,key:“Savings”},{item:“def”,key:“Savings”},{item:“def”,key:“Savings”}] 此.state={React native 根据React Native中另一个选取器所做的选择重新呈现选取器项?,react-native,React Native,如何根据React Native中其他选取器所做的选择重新呈现选取器项 var选项=[“家”、“储蓄”、“汽车”、“女友”] var集群=[{item:“abc”,key:“Home”},{item:“def”,key:“Savings”},{item:“def”,key:“Savings”},{item:“def”,key:“Savings”}] 此.state={ selected_picker_1: "", selected_picker_2: "", } onValueChan
selected_picker_1: "",
selected_picker_2: "",
}
onValueChangePicker1(值){
这是我的国家({
所选\u选择器\u 1:值
});
}
onValueChangePicker2(值){
这是我的国家({
所选\u选择器\u 2:值
});
}
{options.map((项目,索引)=>{
返回()
})}
{cluster.map((项,索引)=>{
renderIf(item.key==this.state.selected\u picker\u 1)
{
返回(
)
}
})}
//当在第一个选择器上选择“Home”时,我需要仅使用键为“Home”的项目重新渲染第二个选择器 因为您没有提供任何细节。这是我的假设。第二个选择器值(需要根据选择进行更改的值)依赖于第一个选择器值 首先,您需要确定哪些选择器值是相关的。然后可以将从属值指定给状态。设置后,第一个选择器将更新各种选择的状态,然后第二个选择器将自动使用这些值进行更新 这将是一个一般性问题的一般性答案:) 编辑 您在此处检查错误的值
renderIf(item.key==this.state.selected\u picker\u 2)
。您的第一个选择器在此.state.selected\u picker\u 1
中设置值,而您显示的结果是基于此.state.selected\u picker\u 2
您的条件应更改为renderIf(item.key==this.state.selected\u picker\u 1)
编辑2
此
的范围在map的回调函数中不可用。将常数定义为const instance=this在render
方法中选择code>。并将您的条件更改为renderIf(item.key==instance.state.selected\u picker\u 1)
从此链接解决
const items=['Simon Mignolet'、'Nathaniel Clyne'、'Dejan Lovren'、'Mama Sakho'、'Emre Can'];
变量按钮=[
“选项0”,
“选项1”,
“方案2”,
“删除”,
“取消”,
];
导出默认类testBase2扩展组件{
建造师(道具){
超级(道具);
此.state={
已选择1:“键1”
}
}
获取项目(val){
如果(val=='key1')
{
退货项目;
}
否则{
返回按钮;
}
}
onValueChange(值)
{
这是我的国家({
selected1:值
});
}
onValueChange2(值)
{
这是我的国家({
selected2:值
});
}
render(){
返回(
你好
{this.getItems(this.state.selected1).map((item,i)=>{
console.log('item',item);
返回
})}
);
}
}
你所说的选取者是什么意思?日期/时间选择器?另外,如果您放置示例代码和您面临的错误,也会很好。否则,您可能无法得到正确或有帮助的答案。我已对我的查询进行了编辑。请看一看。@Alby请添加onValueChangeProject
method的实现对不起…变量中有一些错误。请再看一看。@Alby如果只有一个函数控制两种状态,它不应该是this.onValueChangePicker2.bind(this)
在您的第一个选择器中?ValueChangePicker1和ValueChangePicker2sorry上有两个函数,这是代码导入中的错误。问题仍然存在。
onValueChangePicker1(value) {
this.setState({
selected_picker_1: value
});
}
onValueChangePicker2(value) {
this.setState({
selected_picker_2: value
});
}
<Picker
mode="dropdown"
placeholder="Select One"
style={{ width: undefined,backgroundColor:"white",marginTop:5}}
selectedValue={this.state.selected_picker_1}
onValueChange={this.onValueChangePicker1.bind(this)}>
{options.map((item, index) => {
return (<Picker.Item label={item} value={item} key={item}/>)
})}
</Picker>
<Picker
mode="dropdown"
placeholder="Select One"
style={{ width: undefined,backgroundColor:"white",marginTop:5}}
selectedValue={this.state.selected_picker_2}
onValueChange={this.onValueChangePicker2.bind(this)}>
{cluster.map((item, index) => {
renderIf(item.key===this.state.selected_picker_1)
{
return(
<Picker.Item label={item.item} value={index} key={index}/>
)
}
})}
</Picker>
const items = ['Simon Mignolet','Nathaniel Clyne','Dejan Lovren','Mama Sakho','Emre Can'];
var BUTTONS = [
'Option 0',
'Option 1',
'Option 2',
'Delete',
'Cancel',
];
export default class testBase2 extends Component {
constructor(props) {
super(props);
this.state = {
selected1: 'key1'
}
}
getItems(val) {
if (val === 'key1')
{
return items;
}
else {
return BUTTONS;
}
}
onValueChange (value)
{
this.setState({
selected1 : value
});
}
onValueChange2 (value)
{
this.setState({
selected2 : value
});
}
render() {
return (
<Container>
<Header>
<Left>
<Button transparent>
<Icon name="heart" size={20} color='red' />
</Button>
</Left>
<Body>
<Title>Hello</Title>
</Body>
<Right />
</Header>
<Content padder>
<Picker
iosHeader="Select one"
mode="dropdown"
selectedValue={this.state.selected1}
onValueChange={this.onValueChange.bind(this)}>
<Item label="Wallet" value="key0" />
<Item label="ATM Card" value="key1" />
<Item label="Debit Card" value="key2" />
<Item label="Credit Card" value="key3" />
<Item label="Net Banking" value="key4" />
</Picker>
<Picker
iosHeader="Select one"
mode="dropdown"
defaultLabel={"waiting"}
selectedValue={this.state.selected2}
onValueChange={this.onValueChange2.bind(this)}>
{this.getItems(this.state.selected1).map((item, i) => {
console.log('item', item);
return <Item label={item} key={`${i}+1`} value={i} />
})}
</Picker>
</Content>
</Container>
);
}
}