React native 根据React Native中另一个选取器所做的选择重新呈现选取器项?

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

如何根据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: "",
}

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=thisrender
方法中选择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>
    );
  }
}