2016-05-11 12 views
0

メートで試していますが、うまくいきません。反応で動的に幅を取得するには?

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

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

}

、これは誤りです: index.js:20222キャッチされない例外TypeError:あなたが要素にrefを持っている場合this.refs.tabla.measureが機能

答えて

2

ないが、 this.refs.myelem.clientWidth(CSSまたはインラインレイアウトボックスを持たない要素の場合は0)か、おそらくもっと良いでしょうthis.refs.myelem.getBoundingClientRect().width measureの方法はどこから来るべきかわかりません。

Reactは標準化されたDOM実装を提供することを覚えておくと便利です。つまり、ReactイベントとDOM要素を「標準」Js DOMノードとイベントを扱っているかのように扱うことができます。標準のDOMノードでもgetBoundingClientRectとclientWidthの両方が利用できますが、Reactに関連する魔法はありません。

+0

レコードについては、これについては何も反応しません。この呼び出しを行う最適な場所は 'componentDidMount'と' componentDidUpdate'です。これにより、 'component'がレンダリングされ、幅を変更する可能性のある新しい小道具の更新ケースをキャッチすることができます。 – kwelch

+1

trueであることに注意してください。たとえば、ウィンドウのサイズ変更では幅が変更されないという仮定の下で動作します。 –

+0

これに関する適切な文書は、React docsを参照してください。 https://facebook.github.io/react/tips/dom-event-listeners.html – kwelch

関連する問題