Show/hide 基于 React 响应的成功或危险警报
Show/hide success or danger alert based on response in React
请协助显示 React Bootstrap 基于来自 fetch 的响应消息的警报。我尝试了很多逻辑,但我对 React 的了解似乎达到了极限,尤其是 hooks
下面是我的代码
import React, { useState } from 'react';
import { Alert } from 'react-bootstrap';
我的功能如下所示,
export default (props) => {
const [invisibleSuccess, setInvisibleSuccess] = useState(false);
const [invisibleDanger, setInvisibleDanger] = useState(false);
const [message, setMessage] = useState('');
提交处理程序
async function submitHandler() {
fetch("http://example.api.com", requestOptions)
.then(response => response.json())
.then(result => {
switch (result.message) {
case 'success':
setInvisibleSuccess(true);
break;
case 'error':
setInvisibleDanger(true);
break;
default:
setMessage(result.message);
}
})
.catch(error => {
setMessage(error.message);
});
}
和我的警报如下,由于它们的错误状态,它们默认隐藏
return (
<div className="row d-flex justify-content-center">
<div className="col-sm-12">
<div className="card">
<div className="card-details">
<div className="row d-flex justify-content-center">
<div className="col-sm-12 text-center">
<Alert show={invisibleSuccess} variant="success"><Alert.Heading>Payment made Successfully!</Alert.Heading></Alert>
<Alert show={invisibleDanger} variant="danger">
<Alert.Heading>Payment Failed!</Alert.Heading>
<hr />
<p className="mb-0">
{message}
</p>
</Alert>
</div>
</div>
</div>
</div>
</div>
</div>
);
我已经构建了这样的警报并且运行良好
import { useState } from 'react';
import { Alert, Button } from 'react-bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';
function App() {
const [showDangerAlert, setshowDangerAlert] = useState(false);
const [showSuccessAlert, setshowSuccessAlert] = useState(false);
const getData = async () => {
let resp = await fetch('https://jsonplaceholder.typicode.com/todos/2');
let data = await resp.json();
// data.completed = true;
console.log(data);
switch (data.completed) {
case false:
return setshowDangerAlert(true);
case true:
return setshowSuccessAlert(true);
default:
return alert('no data found regarding this');
}
};
return (
<div className="App">
<Button onClick={() => getData()}>fetch todo status</Button>
<Alert
show={showDangerAlert}
variant="danger"
className="w-25 mt-3 ml-3 "
>
This is a error Message
</Alert>
<Alert
show={showSuccessAlert}
variant="success"
className="w-25 mt-3 ml-3 "
>
This is a success Message
</Alert>
</div>
);
}
export default App;
请协助显示 React Bootstrap 基于来自 fetch 的响应消息的警报。我尝试了很多逻辑,但我对 React 的了解似乎达到了极限,尤其是 hooks
下面是我的代码
import React, { useState } from 'react';
import { Alert } from 'react-bootstrap';
我的功能如下所示,
export default (props) => {
const [invisibleSuccess, setInvisibleSuccess] = useState(false);
const [invisibleDanger, setInvisibleDanger] = useState(false);
const [message, setMessage] = useState('');
提交处理程序
async function submitHandler() {
fetch("http://example.api.com", requestOptions)
.then(response => response.json())
.then(result => {
switch (result.message) {
case 'success':
setInvisibleSuccess(true);
break;
case 'error':
setInvisibleDanger(true);
break;
default:
setMessage(result.message);
}
})
.catch(error => {
setMessage(error.message);
});
}
和我的警报如下,由于它们的错误状态,它们默认隐藏
return (
<div className="row d-flex justify-content-center">
<div className="col-sm-12">
<div className="card">
<div className="card-details">
<div className="row d-flex justify-content-center">
<div className="col-sm-12 text-center">
<Alert show={invisibleSuccess} variant="success"><Alert.Heading>Payment made Successfully!</Alert.Heading></Alert>
<Alert show={invisibleDanger} variant="danger">
<Alert.Heading>Payment Failed!</Alert.Heading>
<hr />
<p className="mb-0">
{message}
</p>
</Alert>
</div>
</div>
</div>
</div>
</div>
</div>
);
我已经构建了这样的警报并且运行良好
import { useState } from 'react';
import { Alert, Button } from 'react-bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';
function App() {
const [showDangerAlert, setshowDangerAlert] = useState(false);
const [showSuccessAlert, setshowSuccessAlert] = useState(false);
const getData = async () => {
let resp = await fetch('https://jsonplaceholder.typicode.com/todos/2');
let data = await resp.json();
// data.completed = true;
console.log(data);
switch (data.completed) {
case false:
return setshowDangerAlert(true);
case true:
return setshowSuccessAlert(true);
default:
return alert('no data found regarding this');
}
};
return (
<div className="App">
<Button onClick={() => getData()}>fetch todo status</Button>
<Alert
show={showDangerAlert}
variant="danger"
className="w-25 mt-3 ml-3 "
>
This is a error Message
</Alert>
<Alert
show={showSuccessAlert}
variant="success"
className="w-25 mt-3 ml-3 "
>
This is a success Message
</Alert>
</div>
);
}
export default App;