React native 如何将响应传递给react native RNPickerSelect Functional components

React native 如何将响应传递给react native RNPickerSelect Functional components,react-native,React Native,好的,这是一个非常简单的操作,我想做我只想用从http请求接收的数据填充一个RNPickerSelect,问题是我正在学习如何使用react native,我有点困惑。这是我的代码: import React,{useState} from 'react'; import RNPickerSelect from 'react-native-picker-select'; import { View, Text, Button } from 'react-native'; const g

好的,这是一个非常简单的操作,我想做我只想用从http请求接收的数据填充一个RNPickerSelect,问题是我正在学习如何使用react native,我有点困惑。这是我的代码:

import React,{useState} from 'react';
import RNPickerSelect from 'react-native-picker-select';
import { View, Text, Button } from 'react-native';

    const getData = () => {
      const xhr = new XMLHttpRequest();
      xhr.open('GET','http://3.86.214.41/api/v1/web/activities');
      xhr.responseType = 'json'
      xhr.onload = () => {
          const data = xhr.response
          for (var i = 0; i < data.length; i++) {
            alert(data[i].id + data[i].name);
          }
      }
      xhr.send();
    }
    
    const Actividad = () => {
      const [activityId,setActivityId] = useState('');
      return (
        <View>
          <Text>Selecciona Actividad</Text>
          <RNPickerSelect
            onValueChange={activityId => setActivityId(activityId)}
            items={
               [ {label: 'actividad', value: '1'}]
            }
          />
          <Button onPress={getData} title="Get Activities" />
        </View>
      );
    };
    
    export default Actividad;
import React,{useState}来自“React”;
从“反应本机选择器选择”导入RNPickerSelect;
从“react native”导入{视图、文本、按钮};
常量getData=()=>{
const xhr=new XMLHttpRequest();
xhr.open('GET','http://3.86.214.41/api/v1/web/activities');
xhr.responseType='json'
xhr.onload=()=>{
常量数据=xhr.response
对于(变量i=0;i{
常量[activityId,setActivityId]=useState(“”);
返回(
活动选择
setActivityId(activityId)}
项目={
[{label:'actividad',value:'1'}]
}
/>
);
};
导出默认活动;
您可以看到我迭代的响应,只是为了确保数据在那里,所以我想使用该数据创建项目列表


从getData功能到RNPickerSelect组件内的items道具,希望我足够清楚,因此,如果有人可以帮助我,我将投票支持您的答案,非常感谢。很抱歉,如果这是一个问题,我还找不到一个清晰易懂的答案。谢谢。

您需要为组件添加一个额外的状态

  const [items,setItems] = useState([ {label: 'actividad', value: '1'}]);
然后将此状态传递给您的RNPickerSelect:

 <RNPickerSelect
    onValueChange={activityId => setActivityId(activityId)}
    items={items}
 />
现在只需将这个函数传递给getData函数,这样您就可以根据

<Button onPress={() => getData(onEndGetData)} title="Get Activities" />

如果我把所有这些放在一起,我会非常感谢你的工作:`我纠正了我的打字错误,你觉得这有用吗?还是你有麻烦了?
<Button onPress={() => getData(onEndGetData)} title="Get Activities" />
const getData = (onEndGetData) => {
    ...
    xhr.onload = () => {
              onEndGetData(xhr.response);
          }