Wenn ich ein Formular abschicke, möchte ich ein kleines Popup für 2,5 Sekunden anzeigen, wenn der Server eine schlechte Antwort zurücksendet.Semantic-ui-react: Wie trigge ich ein Popup ohne Klick/Hover?
Die Logik ist ziemlich einfach, aber ich kann nicht herausfinden, wie dieses popup zu einem Boolean irgendwo in der Statusverwaltung (MobX in meinem Fall) zu hören. Ich kann den Inhalt gut in das Popup bekommen, aber der Auslöser ist eine Schaltfläche (und der Inhalt wird angezeigt, wenn Sie darauf klicken) - Aber wie mache ich es irgendwo einen booleschen Wert?
recht einfach Klasse hier:
import React from "react";
import { Popup, Button } from "semantic-ui-react";
import { inject } from "mobx-react";
const timeoutLength = 2500;
@inject("store")
export default class ErrorPopup extends React.Component {
state = {
isOpen: false
};
handleOpen =() => {
this.setState({
isOpen: true
});
this.timeout = setTimeout(() => {
this.setState({
isOpen: false
})
}, timeoutLength)
};
handleClose =() => {
this.setState({
isOpen: false
});
clearTimeout(this.timeout)
};
render() {
const errorContent = this.props.data;
if(errorContent){
return(
<Popup
trigger={<Button content='Open controlled popup' />}
content={errorContent}
on='click'
open={this.state.isOpen}
onClose={this.handleClose}
onOpen={this.handleOpen}
position='top center'
/>
)
}
}
}
Allerdings ist der Auslösewert eine Schaltfläche, die wiedergegeben wird, wenn this.props.data
vorhanden ist. Aber das ist nicht das Verhalten, das ich mir wünsche; Ich möchte einfach das Popup rendern (und damit triggern), wenn this.props.data
da ist; alternativ kann ich einen true
Wert mit Requisiten zur Verfügung stellen, wenn es sein muss.
Aber wie kann ich diese Komponente auslösen, ohne dass es ein Hover/Button ist?
Es scheint, dass die 'offene' Stütze tatsächlich eine Durchleitung zur' Portal'-Komponente ist (sie wird von 'Popup' verwendet). Das macht auch Sinn, warum es nur so geschlossen werden kann. Wenn Sie "open = true" übergeben, übergeben Sie das tatsächlich an "Portal", jedoch ist die Komponente "Popup" statisch positioniert und daher kennt * nicht die Koordinaten, die in * sein müssen. Aus diesem Grund kann es nur durch ein Ereignis geöffnet werden - sie verwenden das Objekt "Event", um die Position des Cursors zu erhalten. Siehe https://github.com/Semantic-Org/Semantic-UI-React/issues/1065 – losnir