J'utilise UploadCare dans une modalité qui est en cours de rendu via un portail (à partir de React 16). UploadCare fonctionnait très bien dans le modal jusqu'à ce que je créé un React portail puis l'erreur ci-dessous a eu lieu:UploadCare impossible de trouver le sélecteur de correspondance d'élément DOM après avoir créé React Portal
Error: No DOM elements found matching selector
▶ 2 stack frames were collapsed.
UploadCare.componentDidMount
src/components/UploadCare.js:8
5 | class UploadCare extends Component {
6 | componentDidMount() {
7 | const { onChange } = this.props;
> 8 | const widget = uploadcare.Widget(`#${this.id}`);
Je crée mon portail comme ceci: https://codepen.io/gaearon/pen/yzMaBd
UploadCare nécessite un sélecteur DOM, dans lequel je m en utilisant un appelé ID. Code ci-dessous:
class UploadCare extends Component {
componentDidMount() {
const { onChange } = this.props;
const widget = uploadcare.Widget(`#${id}`);
if (onChange && typeof onChange === "function") {
widget.onChange(file => {
if (file) {
file.done(info => onChange(info.cdnUrl)).fail(() => onChange(null));
} else {
onChange(null);
}
});
}
}
render() {
const { id, name } = this.props;
return (
<input
type="hidden"
name={name}
id={id}
data-public-key={process.env.REACT_UPLOADCARE_PUBLIC_KEY}
/>
);
}
}
J'ai corrigé l'erreur en utilisant une référence, mais je ne comprends pas pourquoi l'erreur est survenue. Quelqu'un peut-il m'expliquer ce qu'un portail a fait pour affecter le DOM et mon sélecteur CSS et pourquoi cela nécessite-t-il que j'utilise maintenant un ref pour trouver l'élément DOM? Merci!