#javascript #node.js #reactjs #toast #react-toastify
Вопрос:
https://codesandbox.io/s/l2qkywz7xl?from-embed=amp;file=/index.js
Привет, ссылаясь на вышеприведенную песочницу, я тоже хотел бы что-то сделать со своей таблицей, как я могу добавить функцию отмены в свой код?
import { toast, ToastContainer } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
toast.configure()
const deleteCustomer = (ID) => {
if (window.confirm("Are you sure you want to delete?")) {
Axios.delete(`http://localhost:3001/stats/delete/${ID}`).then(
(response) => {
toast("row deleted");
setCustomerList(
customerList.filter((val) => {
toast("notify");
console.log("toast notify run");
return val.ID !== ID;
})
);
}
);
}
};
const displayCustomers = customerList
.slice(pagesVisited, pagesVisited customersPerPage)
.map((val, key) => {
const dateStr = new Date(val.latest_time_of_visit).toLocaleDateString(
"en-CA"
);
const timeStr = new Date(val.latest_time_of_visit).toLocaleTimeString();
const dateTime = `${dateStr} ${timeStr}`;
const my_serial = key pageNumber * customersPerPage;
return (
<tr>
{/*}
<td>{val.ID}</td>
<td>{my_serial 1}</td>
*/}
<td>{val.name}</td>
<td>{val.email}</td>
<td>{val.company_name}</td>
<td>{val.counts_of_visit}</td>
<td>{dateTime}</td>
<td>{val.contacted}</td>
<td>
<select
onChange={(event) => {
setNewContacted(event.target.value);
}}
>
<option value="" selected disabled hidden>
Select Yes/No
</option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
<button
className="btn btn-primary"
onClick={() => {
updateCustomerContacted(val.ID);
}}
>
Update
</button>
</td>
<td>
<button
className="btn btn-danger"
onClick={() => {
deleteCustomer(val.ID);
}}
>
Delete
</button>
Итак, после того, как я нажму кнопку удаления, которая вызывает параметр удаления, появится моя строка записи тоста удалена, но как я могу добавить к ней кнопку отмены?
Комментарии:
1. Из песочницы кнопка отмены уже есть в вашем тосте? Так в чем же именно заключается ваш вопрос?
2. @RobertTirta из моего опубликованного кода, как я могу добавить кнопку отмены в всплывающее уведомление
3. Я вижу, вы тоже используете
"react-toastify";
пакет? вы хотите показать нам свою песочницу кода, чтобы мы могли ее отредактировать? Мне нужно больше контекста. Если вы пытаетесь использовать один и тот же пакет или другой и т. Д.4. @RobertTirta Я также использую пакет react toastify, я не уверен, как создать песочницу.. так как мои данные извлекаются из внутреннего api
5. @RobertTirta ????
Ответ №1:
Вы забыли указать <ToastContainer />
, как указано в документах, для монтируемого компонента.
Затем вам нужно поместить компонент в toast()
функцию в качестве кнопки отмены, чтобы включить свою логику.
Ваш код, поскольку он не завершен, должен быть где-то примерно так
import { toast, ToastContainer } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
toast.configure()
const deleteCustomer = (ID) => {
if (window.confirm("Are you sure you want to delete?")) {
Axios.delete(`http://localhost:3001/stats/delete/${ID}`).then(
(response) => {
toast("row deleted");
setCustomerList(
customerList.filter((val) => {
toast(<button onClick={() => console.log("your undo logic here"}>UNDO</button>);
return val.ID !== ID;
})
);
}
);
}
};
const displayCustomers = customerList
.slice(pagesVisited, pagesVisited customersPerPage)
.map((val, key) => {
const dateStr = new Date(val.latest_time_of_visit).toLocaleDateString(
"en-CA"
);
const timeStr = new Date(val.latest_time_of_visit).toLocaleTimeString();
const dateTime = `${dateStr} ${timeStr}`;
const my_serial = key pageNumber * customersPerPage;
return (
<tr>
{/*}
<td>{val.ID}</td>
<td>{my_serial 1}</td>
*/}
<td>{val.name}</td>
<td>{val.email}</td>
<td>{val.company_name}</td>
<td>{val.counts_of_visit}</td>
<td>{dateTime}</td>
<td>{val.contacted}</td>
<td>
<select
onChange={(event) => {
setNewContacted(event.target.value);
}}
>
<option value="" selected disabled hidden>
Select Yes/No
</option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
<button
className="btn btn-primary"
onClick={() => {
updateCustomerContacted(val.ID);
}}
>
Update
</button>
</td>
<td>
<button
className="btn btn-danger"
onClick={() => {
deleteCustomer(val.ID);
}}
>
Delete
</button>
</td>
<ToastContainer closeOnClick={false} closeButton={false} />
Комментарии:
1. так это, по сути, дополнение к этому? <ToastContainer closeOnClick={false} closeButton={false} /> Но как добавить кнопку отмены в функцию toast ()?
2. Я просто покажу вам, как
toast()
функция принимает компонент в качестве параметра. Так что вам придется сделать компонент самостоятельно, я также вставил кнопку «Отменить». Пожалуйста, обратитесь к моему коду3. тира о, я не вижу, можно ли создать фрагмент кода, это <ToastContainer closeOnClick={false} closeButton={false}/>, который создает кнопку?
4. Тира, так как же??? это контейнер для тостов, а затем создайте компонент?
5. Вы хотя бы пробовали скопировать и вставить мой код? @fyceheist