Ich habe ein Problem. Also, ich mache eine Reaktionskomponente und brauche einen Tooltip mit Knopf. Tooltip funktioniert, aber ich kann es nicht platzieren wo ich will (ich meine in der Mitte des Buttons und darüber).Reagieren Komponente funktioniert nicht
Wenn ich tröstete log, dass es zeigt, dass e.target.offsetLeft und e.target.offsetTop 0 sind, aber ich gab es Marge von beiden Seiten.
Aber eigentlich, wenn ich diesen Code platzieren, die Tooltip zu platzieren, dann wird ganz Tooltip nicht angezeigt:
tooltip.style.left = options.x + (options.w/2) - (tooltip.offsetWidth/2) + "px";
tooltip.style.top = (options.y - tooltip.offsetHeight - 10) + "px";
Und es ist mein ganzer Code:
import React from 'react';
import ReactDOM from 'react-dom';
import Style from 'style-it';
var Ink = require('react-ink');
import FontIcon from '../FontIcon/FontIcon';
var IconButton = React.createClass({
getInitialState() {
return {
iconStyle: "",
style: "",
cursorPos: {},
};
},
render() {
var _props = this.props,
...
globalTooltip = null,
...
function createTooltip(options) {
var tooltip = document.createElement("div");
tooltip.className = "tooltip";
tooltip.appendChild(document.createTextNode(_props.tooltip));
document.body.appendChild(tooltip);
tooltip.style.left = options.x + (options.w/2) - (tooltip.offsetWidth/2) + "px";
tooltip.style.top = (options.y - tooltip.offsetHeight - 10) + "px";
globalTooltip = tooltip;
console.log(options);
};
function showTooltip(e){
var options = {
w: e.target.offsetWidth,
x: e.target.offsetLeft,
y: e.target.offsetTop,
};
createTooltip(options);
};
function removeTooltip(e){
globalTooltip.parentNode.removeChild(globalTooltip);
};
return(
...
);
}});
ReactDOM.render(
<IconButton ... tooltip="aaaaa" />, document.getElementById('app')
);
Und in diesem Moment kann ich 't console log das options Objekt:/
Sie können Tooltip-Element auch einfach ein-/ausblenden, indem Sie 'display' verwenden. CSS-Eigenschaft entweder auf' none' oder 'block' basierend auf den Requisiten der Komponente. Es würde sogar schneller funktionieren als DOM zu aktualisieren. –
upvoted für @ free-souls Antwort, es ist besser, es durch den ReactJS-Weg zu tun. –
es funktioniert sehr gut, aber ich kann nicht platzieren, wo ich es haben möchte – Karol