2017-06-29 8 views
0

masonry-layoutにnpmをインストールしましたが、このコンポーネントをレンダリングすると要素の定義されていないエラーが発生しますか?reactjsと石積みのレイアウト - 未定義

を「未定義のプロパティ 『要素』を設定することはできません」ここで私はreactjsに新しいですし、私は仕事に石工レイアウトグリッドを取得しようとしていますjsfiddle

http://jsfiddle.net/0ht35rpb/82/

です。ドキュメントあたりとして https://masonry.desandro.com/#package-managers

import React from 'react' 
// import $ from 'jquery' 

import Masonry from 'masonry-layout' 

class VideoGrid extends React.Component { 
    componentDidMount() { 
    this.invokeMasonry() 
    } 

    invokeMasonry() { 
    var elem = document.querySelector('.grid') 
    Masonry(elem, { 
     itemSelector: '.grid-item', 
     columnWidth: '.grid-sizer', 
     percentPosition: true 
    }) 
    } 

    render() { 
    return (
     <div className='grid'> 
     <div className='grid-sizer width2' /> 
     <div className='grid-item width2'> 
      <img src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/orange-tree.jpg' /> 
     </div> 
     <div className='grid-item width2'> 
      <img src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/submerged.jpg' /> 
     </div> 
     </div> 
    ) 
    } 
} 

export default VideoGrid 
+0

あなたはjQueryプラグインとしてそれを使用してみましたが? .i.e:$( '。grid')。masonry()。 – Ved

+0

私は非常に類似したエラーを信じています - Uncaught TypeError:未定義のプロパティ '要素'を設定できません –

+0

見てください:https://github.com/desandro/masonry/issues/869 – Ved

答えて

1

var elem = document.querySelector('.grid') 
    Masonry(elem, { 
     itemSelector: '.grid-item', 
     columnWidth: '.grid-sizer', 
     percentPosition: true 
    }) 

は次のようになります。

var elem = document.querySelector('.grid') 
var msnry = new Masonry(elem, { 
      itemSelector: '.grid-item', 
      columnWidth: '.grid-sizer', 
      percentPosition: true 
}); 
+0

いいえ - 私のreactjsプロジェクトは"new"タグ - msnryが使用されていないためエラーが発生する - これは問題ではありません - elemが呼び出されたときにelemが未定義の場合 –

+0

elemは 'componentDidMount '。 – Ved

+0

console.log(elem)の場合は、elemを取得しますか? – Ved

関連する問題