繁体   English   中英

API 调用 React Native 和 axios

[英]API call with React Native and axios

我是 React 的新手,我想做的是用 GET 请求调用我的 API 以将电梯的状态更改为“正在运行”,并且它的颜色状态从红色变为绿色。 问题是它似乎没有调用 API 并在我单击 CONFIRM 时将我带回之前的屏幕。

我打电话给 API 的 function 看起来像这样

function ElevatorStatusScreen({navigation, route}) {
const { Elevator } = route.params;
const [elevatorStatus, setEleStatus] = React.useState(Elevator.status);
const [statusColor, setColorStatus] = React.useState('red');


// Call to the api to update the status of an elevator
const endtask = () => {
    axios.get(`https://apilink/api/Elevators/update/${Elevator.id}/Operational`)
    .then(response => {
        if(response.status == 200){
            Alert.alert('Status has been changed to Operational!')
            setColorStatus('green')
            setEleStatus('Operational');
        }
    })
}

return (
    <ImageBackground 
    style={styles.background}
    source={require('../assets/white.jpg')}
    >
        <Text style={styles.title}>Elevator: {Elevator.id}</Text>
        <Text style={{ color: statusColor }}>{elevatorStatus}</Text>          
        {elevatorStatus === 'Stopped' ? (
            <TouchableOpacity style={styles.endTask} onPress={() => endtask()}>
                <Text style={styles.endText}>END TASK</Text>
            </TouchableOpacity>
        )
        :
            <TouchableOpacity style={styles.confirm} onPress={() => {
                navigation.goBack()
            }}>
                <Text style={styles.endText}>CONFIRM</Text>
            </TouchableOpacity>
        }
    </ImageBackground>
);
}

不知道我做错了什么。 这是来自我的电梯 controller 的 C# 项目中的端点。 (我测试了它并且它有效)

[HttpGet("update/{id}/{status}")]
public async Task<dynamic> test(string status, long id)
{
    var elevator = await _context.elevators.FindAsync(id);
    
    elevator.Status = status;
    await _context.SaveChangesAsync();         

    return elevator;
}

端点: //apilink/api/Elevators/update/1/Operational 在我的浏览器中返回一个像这样的 JSON

{ "id":1, "status":"Operational", "columnId":1, "serialNumber":"666999990867" }

如果您需要更多代码,请告诉我,并感谢您的帮助。

问题是我的电梯状态在我的数据库中是“离线”而不是“停止”......对此感到抱歉

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM