У меня проблема. Итак, я создаю компонент реакции, и мне нужна подсказка с кнопкой. Всплывающая подсказка работает, но я не могу разместить ее там, где хочу (я имею в виду в центре кнопки и выше).Реакция компонента не работает
Когда я утешал журнал, он показывает, что e.target.offsetLeft и e.target.offsetTop равны 0, но я дал ему преимущество с обеих сторон.
Но на самом деле, когда я помещаю этот код, который должен разместить всплывающую подсказку, то вся подсказка не отображается:
tooltip.style.left = options.x + (options.w/2) - (tooltip.offsetWidth/2) + "px";
tooltip.style.top = (options.y - tooltip.offsetHeight - 10) + "px";
И это весь мой код:
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')
);
И в этот момент я могу 't даже консоль зарегистрировать объект опций:/
Вы также можете просто показать/скрыть элемент подсказки, используя свойство 'display' CSS, либо установить' none', либо 'block' на основе реквизитов компонента. Это будет работать даже быстрее, чем обновление DOM. –
, на что отвечает @ free-soul, лучше сделать это с помощью ReactJS. –
он работает очень хорошо, но я не могу разместить это, где хочу, чтобы он был – Karol