【问题标题】:reactjs and masonry layout - undefinedreactjs 和砌体布局 - 未定义
【发布时间】:2017-12-02 15:51:29
【问题描述】:

我已经在 masonry-layout 上安装了 npm —— 但是当我渲染这个组件时,它会出现一个元素未定义的错误? “无法设置未定义的属性‘元素’”

这是一个 jsfiddle

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

我是 reactjs 新手,我正在尝试让砌体布局网格正常工作。 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

【问题讨论】:

  • 你试过用它作为jquery插件吗? .即:$('.grid').masonry().
  • 我相信是这样 - 类似的错误 - Uncaught TypeError: Cannot set property 'element' of undefined

标签: javascript reactjs masonry


【解决方案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
});

【讨论】:

  • no - 我的 reactjs 项目拒绝使用“new”标签 - 由于未使用 msnry,它也会引发错误 - 这不是问题 - 好像 elem 未定义时它被调用
  • elem 不应未定义,因为您在 componentDidMount 上调用选择器。
  • 如果你使用console.log(elem),你得到elem了吗?
  • --是的--但仍然是“未捕获的类型错误:无法设置未定义的属性'元素'”
  • 我添加了新的 -- 标记,这似乎已经解决了它 -- 但是砌体渲染可能太快了 -- 所以元素堆叠 -- 并且只切换宽度它们正确排序
猜你喜欢
  • 2013-03-20
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 2021-03-06
相关资源
最近更新 更多