react-zmage icon indicating copy to clipboard operation
react-zmage copied to clipboard

视乎不支持ssr,服务端渲染报window is not defined

Open liumin1128 opened this issue 6 years ago • 8 comments

如题

liumin1128 avatar Apr 17 '18 17:04 liumin1128

谢谢反馈,后续会修复这个问题

Caldis avatar Apr 19 '18 08:04 Caldis

还没有支持ssr吗

urnotzane avatar Apr 18 '19 09:04 urnotzane

@Caldis yes i tired but not supported yet. when will be supported?

himadrinath avatar May 16 '19 16:05 himadrinath

import React, {useRef} from 'react'
import ReactDOM from 'react-dom'
import useMount from 'react-use/lib/useMount'
import Zmage from 'react-zmage'

/**
 * Zmage 不支持 ssr(代码用到 window 和 document),gatsby 构建时会报错,所以包装一下,在 Mount 里面渲染
 * https://www.gatsbyjs.org/docs/debugging-html-builds/
 * @param {*} props
 */
export default function ZmageWrapper(props) {
  const wrapper = useRef(null)

  useMount(() => {
    ReactDOM.render(
      <Zmage {...props} />,
      wrapper.current
    )
  })

  return <div ref={wrapper} />
}

SSR 临时解决方案

repairearth avatar Jun 28 '19 12:06 repairearth

1、let CustomZmage 2、componentDidMount(){ CustomZmage=require('react-zmage') } 3、在render里面使用:<CustomZmage />

hjtgzh avatar Nov 01 '19 08:11 hjtgzh

Thanks for your info. @repairearth

I use import and it works in gatsby:

import React, { useRef } from 'react'
import ReactDOM from 'react-dom'
import useMount from 'react-use/lib/useMount'

const ImageComp = (props) => {
  const imgwrapper = useRef(null)

  useMount(() => {
    import('react-zmage').then(({ default: Zmage }) => {
      ReactDOM.render(
        <Zmage {...props} />,
       imgwrapper.current
      )
    })
  })

  return <div ref={imgwrapper} />
}

StinsonZhao avatar Feb 27 '20 10:02 StinsonZhao

import React, {useRef} from 'react'
import ReactDOM from 'react-dom'
import useMount from 'react-use/lib/useMount'
import Zmage from 'react-zmage'

/**
 * Zmage 不支持 ssr(代码用到 window 和 document),gatsby 构建时会报错,所以包装一下,在 Mount 里面渲染
 * https://www.gatsbyjs.org/docs/debugging-html-builds/
 * @param {*} props
 */
export default function ZmageWrapper(props) {
  const wrapper = useRef(null)

  useMount(() => {
    ReactDOM.render(
      <Zmage {...props} />,
      wrapper.current
    )
  })

  return <div ref={wrapper} />
}

SSR 临时解决方案

ReferenceError: window is not defined 大哥,还是报这个错误啊

noodv avatar Mar 17 '20 22:03 noodv

import React, {useRef} from 'react'
import ReactDOM from 'react-dom'
import useMount from 'react-use/lib/useMount'
import Zmage from 'react-zmage'

/**
 * Zmage 不支持 ssr(代码用到 window 和 document),gatsby 构建时会报错,所以包装一下,在 Mount 里面渲染
 * https://www.gatsbyjs.org/docs/debugging-html-builds/
 * @param {*} props
 */
export default function ZmageWrapper(props) {
  const wrapper = useRef(null)

  useMount(() => {
    ReactDOM.render(
      <Zmage {...props} />,
      wrapper.current
    )
  })

  return <div ref={wrapper} />
}

SSR 临时解决方案

ReferenceError: window is not defined 大哥,还是报这个错误啊

试下我上面写的那个方案

hjtgzh avatar Mar 19 '20 09:03 hjtgzh