【问题标题】:How to get width dynamically in react?如何在反应中动态获得宽度?
【发布时间】:2016-05-11 12:37:45
【问题描述】:

我正在尝试测量但不起作用。

 this.refs.tabla.measure(this._getWidth);

_getWidth(a,f,width,h,x,z){
  width = width + '';
  this.setState({width});
  console.log(width);

}

这是错误: index.js:20222 Uncaught TypeError: this.refs.tabla.measure 不是函数

【问题讨论】:

    标签: javascript reactjs jsx


    【解决方案1】:

    如果你对元素有一个ref,你可以使用this.refs.myelem.clientWidth(对于没有CSS或内联布局框的元素来说为零)或者更好的this.refs.myelem.getBoundingClientRect().width 不确定measure 方法应该来自哪里。

    记住 React 提供了标准化的 DOM 实现会很有帮助,这意味着您可以正常使用 React 事件和 DOM 元素,就像处理“标准” Js DOM 节点和事件一样。 getBoundingClientRect 和 clientWidth 在标准 DOM 节点上也可用,与 React 无关。

    【讨论】:

    • 作为记录,react 对此一无所知,也不应该有。进行此调用的最佳位置是componentDidMountcomponentDidUpdate,这样您可以确保component 完成渲染并捕获可能改变宽度的新道具的更新案例。
    • true,还请注意,假设宽度不会在调整窗口大小时发生变化。
    • 同意有关这方面的适当文档,请参阅 React 文档。 facebook.github.io/react/tips/dom-event-listeners.html
    猜你喜欢
    • 2021-05-09
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2016-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多