如何在ReactDOMServer或ReactDOM上下文中检测

时间:2016-10-30 21:52:43

标签: reactjs dom

我想检测当前组件是由ReactDOM还是由ReactDOMServer呈现。经典的canUseDom

const canUseDOM = () => Boolean(
  typeof window !== 'undefined'
  && window.document
  && window.document.createElement
)

不起作用,因为ReactDOMServer也可以在定义窗口的broswer上下文中使用。我想做这样的事情:

const MyComponent = () =>
  isRenderedByReactDOM()
    ? (<div>I am being rendered by ReactDOM.render</div>)
    : (<div>I am being rendered by ReactDOMServer.renderToString / ReactDOMServer.renderToStaticMarkup</div>)

1 个答案:

答案 0 :(得分:2)

服务器端组件不执行componentDidMount()。那就是你应该放置任何纯粹的浏览器端逻辑。