javascript - 如何从 DOM 获取水平尺寸?

标签 javascript jquery html css reactjs

我有一个使用 React 组件的复杂网页,我正在尝试将该页面从静态布局转换为响应速度更快、可调整大小的布局。然而,我一直遇到 React 的限制,想知道是否有处理这些问题的标准模式。在我的特定情况下,我有一个呈现为带有 display:table-cell 和 width:auto 的 div 的组件。

不幸的是,我无法查询组件的宽度,因为您无法计算元素的大小,除非它实际放置在 DOM 中(DOM 具有用于推断实际渲染宽度的完整上下文)。除了将它用于相对鼠标定位之类的事情之外,我还需要它来正确设置组件内 SVG 元素的宽度属性。

此外,当窗口调整大小时,如何在设置过程中将大小更改从一个组件传递到另一个组件?我们在 shouldComponentUpdate 中进行所有第 3 方 SVG 渲染,但您不能在该方法中为自己或其他子组件设置状态或属性。

是否有使用 React 处理此问题的标准方法?

最佳答案

你可能想要的生命周期方法是componentDidMount
这些元素已经放置在 DOM 中,您可以从组件的引用中获取有关它们的信息。

例子:

var Container = React.createComponent({

  componentDidMount: function () {
    var width = this.refs.svg.getDOMNode().offsetWidth;
  },

  render: function () {
    <svg ref="svg" />
  }

});

关于javascript - 如何从 DOM 获取水平尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33501635/

相关文章:

javascript - 在 codeigniter 中使用 ajax 从另一个页面获取值

javascript - jQuery - IE6 问题与 javascript 和加载 ajax 的内容

javascript - 如何自动播放图库动画

javascript - 自动对齐 HTML 中的表格以填充行

html - jquery 手机 : set padding to main page Div element so that padding + width = device-width

javascript - 通过起始名称获取jquery中输入的值

javascript - 重新排序某些元素后如何重置 ng-repeat block ?

javascript - 将 CURL 命令转换为 NPM 请求调用

javascript - 使用 openexchangerates API 使用 JS/JQuery 进行货币转换

javascript - 我可以在网站上的所见即所得中使用哪些字体