React native 根据动态值选择RadioButton

React native 根据动态值选择RadioButton,react-native,React Native,我有三个单选按钮,男,女,其他,我从服务器上获取数据 我想要的是,当this.state.genderType=='Male'时,应该自动选择Male单选按钮 当this.state.genderType==“女性”时,应选择女性单选按钮,依此类推。 以下是我的状态: SetStatefunction = () =>{ const {retrievedata} = this.state retrievedata.map((item)=>{ th

我有三个单选按钮,男,女,其他,我从服务器上获取数据

我想要的是,当this.state.genderType=='Male'时,应该自动选择Male单选按钮

当this.state.genderType==“女性”时,应选择女性单选按钮,依此类推。 以下是我的状态:

  SetStatefunction = () =>{
    const {retrievedata}  = this.state
      retrievedata.map((item)=>{
       this.setState({name: item.name})
        this.setState({dob: item.dob})
         this.setState({bloodgroup: item.bloodGroup})
          this.setState({email: item.email})
           this.setState({genderType: item.gender})
          this.setState({phone: item.mobile})
         this.setState({address: item.address})
        console.log(this.state.genderType)
      if(item.dob){
     let dob =  moment(item.dob).format("YYYY-MM-DD")
    this.setState({dob: dob})
   }
  })
 }
这是我单选按钮的代码

<RadioGroup
  size={18}
  thickness={2}
  color="#58992c"
  style={{ flexDirection: "row" }}
  onSelect={(index, value) => {
    this.setState({ genderType: value });
  }}
>

  <RadioButton
    value={"Male"}
    style={{ alignItems: "center"}}
    name = "gender"
  >
    <Text style={{fontSize: 16}}>Male</Text>
  </RadioButton>

  <RadioButton
    value={"Female"}
    style={{ alignItems: "center" }}
    name = "gender"
  >
    <Text style={{fontSize: 16}}>Female</Text>
  </RadioButton>

  <RadioButton
    value={"Other"}
    style={{ alignItems: "center" }}
    name = "gender"
  >
    <Text style={{fontSize: 16}}>Other</Text>
  </RadioButton>

</RadioGroup>
您可以将选中的属性添加到RadioButton

如果您在retrievedata中有数据,那么为什么要再次迭代它

您正在迭代retrievedata,每次迭代都调用多个setState,这是完全错误的

setState是异步的。您不应该在映射中调用setState,它只会创建冲突,并且您永远不会得到所需的输出

您可以直接使用retrievedata数组获取值

checked = {retrievedata[0].gender.toLowerCase() === "male"}

你能告诉我们全部代码吗?我们无法预测您正在从服务器接收哪些数据以及.data如何正确接收。数据代码中没有问题。数据处于道具或状态?感谢您的回复。但不起作用。但不是根据数据自动选择的。您能告诉我们您的数据具体在哪里吗?或者发布完整的组件,以便我们可以看到数据来自何处。我将数据保存在状态中。数据获取中没有问题。因为其他字段正在正确地动态更改,所以使用this.state.data.gender代替data.gender。考虑到数据是一个对象,我也在这样做。我以.state.genderType…..data.gender为例
SetStatefunction = () => {
    const { retrievedata } = this.state
    retrievedata.map((item) => {
        this.setState({ name: item.name })
        this.setState({ dob: item.dob })
        this.setState({ bloodgroup: item.bloodGroup })
        this.setState({ email: item.email })
        this.setState({ genderType: item.gender })
        this.setState({ phone: item.mobile })
        this.setState({ address: item.address })
        console.log(this.state.genderType)
        if (item.dob) {
            let dob = moment(item.dob).format("YYYY-MM-DD")
            this.setState({ dob: dob })
        }
    })
}
checked = {retrievedata[0].gender.toLowerCase() === "male"}