【发布时间】:2021-11-26 12:46:58
【问题描述】:
我有一个调用端点的反应控制器。当我收到响应时,我会在一个对象中显示信息,并且我想更改按钮的颜色以表示响应是 200 还是 404。
import React, { useState, useEffect } from "react";
import "./../App.css";
import axios from "axios";
const MicroService = (props) => {
const [personsGet, setPersonGet] = useState([]);
function llamadaAxiosGet (url) {
axios
.get(url)
.then((res) => {
setPersonGet(res.data);
return res.status;
})
.catch(function (error) {
return error.status;
});
}
return (
<div>
<h2>Microservicio:</h2>
<BotonLlamada
url={`https://jsonplaceholder.typicode.com/users`}
textBoton={"Llamada al servicio y display all"}
llamadaAxiosGet={llamadaAxiosGet}
/>
{personsGet.map((person) => (
<li key={person.name}>{person.name}</li>
))}
</div>
);
};
function BotonLlamada(props) {
const [colorButon, setColorButon] = useState("");
const [estado , setEstado]= useState(0);
const onClickbuton = () => {
setEstado(props.llamadaAxiosGet(props.url));
setEstado(props.llamada);
if (estado === 200) {
setColorButon("buttonGreen");
} else if (estado > 399) {
setColorButon("buttonRed");
}
};
useEffect(() => {
if (estado > 399) {
setColorButon("buttonRed");
} else if (estado === 200) {
setColorButon("buttonGreen");
}
},[estado]);
return (
<div>
<button onClick={onClickbuton} className={colorButon}>
{props.textBoton}
</button>
<br />
</div>
);
}
export default MicroService;
所以在代码中,因为 axios 是异步的,所以在完成按钮中的 onClick 方法后会收到响应,但按钮不会改变颜色。 有人可以帮忙吗?
【问题讨论】:
-
您正在更改按钮的类别。某处是否有根据类更改按钮颜色的 CSS 规则?
-
是的,setColorButon("buttonRed");这将检查一个 CSS 并更改它
标签: javascript reactjs axios