Zum Hauptinhalt springen

AsyncLink

Beispiele​

Im Abschnitt Verwendung finden Sie Informationen darüber, wie und wann Sie die Komponente AsyncLink verwenden können.

Dieses Beispiel zeigt die grundlegende Verwendung der AsyncLink-Komponente. Wenn Sie auf den Link klicken, kann der Rückruf der Eigenschaft onTrigger entweder true, false oder eine Zusage zurückgeben. In diesem Beispiel wird die zugewiesene Nachricht „Bitte warten...“ angezeigt. Nach zwei Sekunden verschwindet diese Nachricht und zeigt den Text „Gesendet“ an.

import React, { useState, useEffect } from 'react';
import { AsyncLink } from '@jutro/router/';

export const BasicAsyncLink = () => {
const [showMessage, setShowMessage] = useState(false);
const [message, setMessage] = useState('Submit');

const asyncMessage = "Wait...";

useEffect(() => {
let timerId;
if (showMessage) {
timerId = setTimeout(() => {
setShowMessage(false);
setMessage('Submited');
}, 2000);
}
return () => clearTimeout(timerId); // Clear the timeout when the component unmounts or showMessage changes
}, [showMessage]);

function clickFunction() {
setShowMessage(true);
setMessage(asyncMessage);
}

return (
<div>
<AsyncLink
message={asyncMessage}
onTrigger={clickFunction}
to="/test"
>
{message}
</AsyncLink>
</div>
);
};

Mit diesen Eigenschaften toMessage und failToMessage können Sie Meldungen anzeigen, je nachdem, ob die zurückgegebene Zusage erfolgreich war oder abgelehnt wurde.

Außerdem können Sie die Eigenschaft failTo verwenden, um zu einem anderen Pfad weiterzuleiten, falls die Zusage fehlschlägt.

import React, { useState } from 'react';
import { AsyncLink } from '@jutro/router/';

export const MessagesAsyncLink = () => {
const [successLinkText, setSuccessLinkText] = useState('Success link');
const [failureLinkText, setFailureLinkText] = useState('Failure link');

const asyncMessage = "Wait...";
const successMessage = "Action completed successfully!";
const failureMessage = "Action failed. Please try again.";
const timer = 2000;

const handleSuccess = () => {
setSuccessLinkText(asyncMessage);

setTimeout(() => {
setSuccessLinkText(successMessage);
setTimeout(() => setSuccessLinkText('Success link'), timer);
}, 2000);
};

const handleFailure = () => {
setFailureLinkText(asyncMessage);

setTimeout(() => {
setFailureLinkText(failureMessage);
setTimeout(() => setFailureLinkText('Failure link'), timer);
}, 2000);
};

return (
<div>
<div>
<AsyncLink
message={asyncMessage}
toMessage={successMessage}
failToMessage={failureMessage}
onTrigger={handleSuccess}
to="/async-link#asynclink-messages"
>
{successLinkText}
</AsyncLink>
</div>
<div>
<AsyncLink
message={asyncMessage}
toMessage={successMessage}
failToMessage={failureMessage}
onTrigger={handleFailure}
to="/async-link#asynclink-messages"
>
{failureLinkText}
</AsyncLink>
</div>
</div>
);
};