mysql 如何在axios请求中将更新的set State值作为参数传递

unftdfkk  于 2023-01-01  发布在  Mysql
关注(0)|答案(2)|浏览(134)

我是react native的初学者,我尝试通过axios API get请求从mysql数据库获取用户信息。
登录后,我将电子邮件地址存储在AsyncStorage中,以后想使用AsyncStorage中的该电子邮件地址作为参数来获取用户详细信息。
我写了一段代码,将setState的初始状态设置为"na"。请帮助我如何从AsyncStorage传递电子邮件地址作为参数。
这是我的代码。

// to load email address
  const [SessionEmail, setSessionEmail] = useState('na');
// to load users info
  const [users, setUsers] = useState([]);
useFocusEffect(
    React.useCallback(() => {   
      getUsername();
      getUsersInfoFromAPI();
    }, [])
  );
// to get the session username from localstorage
  const getUsername = async () => {
    try {
      const username = await AsyncStorage.getItem('Username')
      if (username !== null) {
        setSessionEmail(username);
      }
    } catch (e) {
      console.log(e);
    }
  }
// API Calling user details
  const getUsersInfoFromAPI = async () => {
    await axios.get(`https://myapi.co.in/api/user/?email=${SessionEmail}`)
      .then(response => {
        setUser(response.data);
      })
      .catch(error => {
        console.log(error);
      });
  }

页面呈现后,我从metro加载页面,可以看到参数已经发送到服务器。

bnlyeluc

bnlyeluc1#

按以下方式更新代码:

useFocusEffect(
    React.useCallback(() => {   
      getUsername();
    }, [])
  );

而不是保存您的电子邮件到状态,直接发送到函数,但如果你是出于其他原因使用它,你仍然可以保存它,但调用函数,同时从AsyncStorage获得用户名与用户名参数如下.
x一个一个一个一个x一个一个二个x

9rbhqvlz

9rbhqvlz2#

const [users, setUsers] = useState([]);

在这里你可以这样使用

const [users, setUsers] = useState();

我希望这对你有帮助

相关问题