如何在Python Flask + React Native应用中获取用户输入?

问题描述

我是Python Flask的初学者。我有一个反应本地应用程序。在执行main函数的过程中,我想获得用户输入。我还想在函数执行过程中动态更新status状态挂钩的值。

这就是我所做的。

客户端设备

React.useEffect(()=>{
    //all variables and hooks have been declared in original code
    //skipping all declarations to reduce size
    fetch('http://localhost:5000/start',{
            method: 'POST',headers: {
                Accept: 'application/json','Content-Type': 'application/json',},body: JSON.stringify({
                session: sessionID,url: url,user: username,password: password,stuff1: stuff1,stuff2: stuff2
            })
      });
      return unsubscribe;
    },[navigation]);
});
//refresh the status every 2 seconds
React.useEffect(() => {
    const interval = setInterval(() => {
        fetch('http://localhost:5000/status',body: JSON.stringify({
                session: sessionID
            })
    }).then(res => res.json()).then((data)=>{
        setStatus(data.status);
        console.log(data.status);
        if(data.status==='Failed'){
            setStatus("Sorry,this task has Failed");
            setTimeout(()=>{navigation.goBack()},3000)
        } 
    }).catch(()=>{
        setStatus("Either our server or this device went offline");
        //just giving user 5 secs to read the status
        setTimeout(()=>{
            setStatus("Try again...")
            navigation.goBack('Task_Elaborate');
            return;
        },5000)
    });
    },2000);
    return () => clearInterval(interval);
},[]);

服务器(运行Flask)

#function to refresh status in client device
@app.route('/status',methods=['GET','POST'])
@cross_origin(origin='*',headers=['Content-Type','Authorization'])
def refresh_status():
  data = request.get_json()
  session['currentuser'] = data['session']
  if(stuff.status=='Failed'):
    session.pop(data['session'],None)
  return jsonify({'status':stuff.status})

#function to run for triggering main()
@app.route('/start','Authorization'])
def start_main():
  data = request.get_json()
  url = data['url']
  username = data['user']
  password = data['password']
  stuff1 = data['stuff1']
  stuff2 = data['stuff2']
  session['currentuser'] = data['session']
  stuff.main(url,username,password,stuff1,stuff2)
  return ""

运行stuff.main()时,我想获得用户输入并将其用于进一步处理。我该怎么办?

关于状态,该应用首先通过向服务器发出请求来启动主要功能。这将触发服务器中main()的执行。然后,该应用程序每2秒发出刷新状态请求。这些代码段确实起作用。但是我希望有大量的用户,这会减慢它的速度。由于其主要功能,因此速度是此应用程序非常重要的方面。另外,在这方法中,我无法获得用户输入,这是此问题的必要部分。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...