javascript - JSON 对象与窗口变量,用于使用 reactjs 传递服务器端呈现的初始状态

标签 javascript json reactjs serverside-javascript isomorphic-javascript

在使用 Reactjs 的同构应用程序中,您需要将在服务器上呈现的相同初始状态向下传递给客户端(然后客户端将使用事件绑定(bind)等“补充”应用程序)。

我见过两种传递初始状态的方法——

为窗口设置一个全局变量:

<script>
window.initialState = {{JSON.stringify(initialState)}} ;
</script>

或者将其作为 JSON 对象传递:

<script id="initial-state" type="application/json"> {{JSON.stringify(initialState)}}</script>

两者都可以从应用程序的任何位置轻松检索。使用一个比另一个有什么优势吗?

最佳答案

后者避免了全局变量,前者避免了 DOM 查找。我会选择前者,只是因为它需要的代码更少。

一个问题是如果你有</script在您的 JSON 中,它可能允许注入(inject)或意外错误。为防止这种情况,您可以替换 <\u003c .

<script>
window.initialState = {{
    JSON.stringify(initialState).replace(/</g, '\\u003c')
}}; 
</script>

关于javascript - JSON 对象与窗口变量,用于使用 reactjs 传递服务器端呈现的初始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27669648/

相关文章:

javascript - 在Typescript中过滤嵌套数组对象的数组

javascript - 在 JSP 转发之前显示 JavaScript 警报

c# - 如何从数据库创建嵌套 json?

Android- GSON 如何解析不同数据的 JSON 数组?

javascript - Monaco Editor react Electron 卡在负载上

javascript - 有没有办法用javascript复制/上传/编辑文件?

javascript - AngularJS 中的 console.log 在范围函数之后执行

php - HttpURLConnection 从 .php 文件返回垃圾

reactjs - React 计数动画在页面加载后立即开始,应该在滚动到组件时开始(没有 jquery)

javascript - 在 map 功能中 react onClick 功能