【发布时间】:2018-08-30 06:47:46
【问题描述】:
从 React 组件中的脚本访问变量
我正在 Node 上进行设备检测并将这个对象发送到 index.ejs 内的客户端(React)
<script type="text/javascript">window.deviceType = <%- deviceType %></script>
在 React 组件内部,如果我 console.log window.deviceType 我看到它运行良好,但如果我尝试使用它,它会显示 错误,未定义窗口。
比如这是在 react 组件里面
return(
<div>
<Menu.Item>
{window.deviceType.isMobile ? (
<Link to="/">
<h1>React Boilerplate 23</h1>
</Link>
) : (
<div>PROBLEM</div>
)}
</Menu.Item>
<div type="button" onClick={() => console.log(window.deviceType)}>
XX
</div>
</div>
)
我可以正常使用console.log,但是在使用逻辑时它不起作用,所以在上面的示例中渲染不起作用但console.log 起作用。
如果我尝试这样做,也会发生同样的事情
<script type="text/javascript">var deviceType = <%- deviceType %></script>
【问题讨论】:
-
是的。我使用 SSR。但是为了能够为移动或桌面呈现特定的东西,我检测节点上的设备并将其发送到客户端。是的,它所说的窗口没有定义,但如果我只是 console.log(window) 它工作正常。
-
因为 onclick 回调中的代码仅在客户端进行评估。
-
是的。我明白你的目标是什么。那么当代码是 SSR 时,如何使用脚本中的变量呢?
标签: javascript node.js reactjs window script-tag