React native 使用钩子进行背对背API调用不起作用

React native 使用钩子进行背对背API调用不起作用,react-native,React Native,因此,我正在构建一个功能性应用程序,它可以访问LDAP API,并根据输入的用户id导入数据 然后,它获取该输入数据并进行出站API调用,以将该数据发布到数据库中 问题是挂钩似乎不是设置,即使它处于useffect中。。如果我再次运行请求,它确实会工作,但我需要它在第一次运行时工作 我在这里真的很茫然,挂钩和异步的工作方式并不是我的强项 下面是一个示例代码 const axios = require('axios').default; const [name, setName] = us

因此,我正在构建一个功能性应用程序,它可以访问LDAP API,并根据输入的用户id导入数据

然后,它获取该输入数据并进行出站API调用,以将该数据发布到数据库中

问题是挂钩似乎不是设置,即使它处于useffect中。。如果我再次运行请求,它确实会工作,但我需要它在第一次运行时工作

我在这里真的很茫然,挂钩和异步的工作方式并不是我的强项

下面是一个示例代码

  const axios = require('axios').default;
  const [name, setName] = useState('');
  const [position, setPosition] = useState('');
  const [phone, setPhone] = useState('');
  const [email, setEmail] = useState('');
  const [username, setUsername] = useState('');
  const [department, setDepartment] = useState('');

  useEffect(() => {
    console.log('Updaing');
  }, [name, position, phone, email, department, username]);


  const handleSubmit = async () => {
    if (id) {
      await handleLdap();
    } else {
      console.log('no id');
    }
    await handleSendData();
  };

  const handleLdap = async () => {
    const data = await axios
      .get(
        `URL`,
        {
          headers: {
            Accept: 'application/json',
          },
        }
      )
      .then((response) => {
        setName(response.data.ldap_users[0].realname);
        setPosition(response.data.ldap_users[0].position);
        setPhone(response.data.ldap_users[0].phone);
        setEmail(response.data.ldap_users[0].email_address);
        setUsername(response.data.ldap_users[0].username);
        setDepartment(response.data.ldap_users[0].department);
        return data;
      })
      .catch((err) => {
        console.log(err);
      });
  };

  const handleSendData = async () => {
    console.log('sending Data');
    var data = `Data`;

    var config = {
      method: 'put',
      url: `url`,
      data: //data includes all the stuff from the phone, person etc.,
    };
    await axios(config)
      .then(function (response) {
        console.log(JSON.stringify(response.data));
      })
      .catch(function (error) {
        console.log(error);
      });
  };