Javascript 映射从React上的aws sdk返回的数据

Javascript 映射从React上的aws sdk返回的数据,javascript,arrays,reactjs,aws-sdk,aws-amplify,Javascript,Arrays,Reactjs,Aws Sdk,Aws Amplify,我正在为一个应用程序使用AWS Amplify,但它缺乏管理用户的能力,因此我将在短期内使用AWS sdk,直到他们添加该功能为止 我已经能够使用以下代码从promise返回数据: const ListUsers = () => { const [users, setUsers] = useState([]); useEffect(() => { const getUsers = () => { var params = { User

我正在为一个应用程序使用AWS Amplify,但它缺乏管理用户的能力,因此我将在短期内使用AWS sdk,直到他们添加该功能为止

我已经能够使用以下代码从promise返回数据:

const ListUsers = () => {
  const [users, setUsers] = useState([]);
  useEffect(() => {
    const getUsers = () => {
      var params = {
        UserPoolId: USER_POOL_ID,
        AttributesToGet: ['given_name']
      };

      return new Promise((resolve, reject) => {
        AWS.config.update({
          region: USER_POOL_REGION,
          accessKeyId: AWS_ACCESS_KEY_ID,
          secretAccessKey: AWS_SECRET_KEY
        });
        var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
        cognitoidentityserviceprovider.listUsers(params, (err, data) => {
          if (err) {
            console.log(err);
            reject(err);
          } else {
            resolve(data);
            setUsers(data)
          }
        });
      });
    };
    getUsers();
  }, []);

  return users.map(user => {
    return (
      <ul>
        <li>{user.given_name}</li>
      </ul>
};

export default ListUsers;
const ListUsers=()=>{
const[users,setUsers]=useState([]);
useffect(()=>{
const getUsers=()=>{
变量参数={
UserPoolId:USER\u POOL\u ID,
AttributesToGet:['given_name']
};
返回新承诺((解决、拒绝)=>{
AWS.config.update({
区域:用户\池\区域,
accessKeyId:AWS\u ACCESS\u KEY\u ID,
secretAccessKey:AWS\u SECRET\u密钥
});
var cognitoidentityserviceprovider=new AWS.cognitoidentityserviceprovider();
cognitoidentityserviceprovider.listUsers(参数,(错误,数据)=>{
如果(错误){
控制台日志(err);
拒绝(错误);
}否则{
解析(数据);
设置用户(数据)
}
});
});
};
getUsers();
}, []);
返回users.map(user=>{
返回(
  • {user.given_name}
}; 导出默认列表用户;

我注意到的一件事是,它似乎没有设置状态。很肯定,这是因为我做得不对。我需要做的是能够映射返回的数据,就像它在返回语句中所做的那样。任何帮助都将不胜感激!

在这种情况下,似乎不需要创建自己的承诺莎莉,没有它你的钩子会很好用的:

  useEffect(() => {

    var params = {
      UserPoolId: USER_POOL_ID,
      AttributesToGet: ['given_name']
    };

    AWS.config.update({
      region: USER_POOL_REGION,
      accessKeyId: AWS_ACCESS_KEY_ID,
      secretAccessKey: AWS_SECRET_KEY
    });

    var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
    cognitoidentityserviceprovider.listUsers(params, (err, data) => {
      if (err) {
        console.log(err);
      } else {
        setUsers(data)
      }
    });

  }, []);
但主要问题似乎来自您返回的JSX,因为它不能是一个节点数组

在您的情况下,您应该返回
ul
标签和
map
您的用户,如下所示(别忘了给他们一个唯一的
):

返回(
    {users.map(user=>
  • {user.given_name}
  • )}
)
  return (
    <ul>
      {users.map(user => <li key={user.given_name}>{user.given_name}</li>)}
    </ul>
  )