【问题标题】:How to initial window.__INITIAL_STATE__ to data in a .ejs view file?如何将 window.__INITIAL_STATE__ 初始化为 .ejs 视图文件中的数据?
【发布时间】:2020-07-11 10:02:54
【问题描述】:

我正在尝试通过初始化窗口将数据传递到客户端。INITIAL_STATE,但是,这一直给我“预期表达式”错误,我不确定如何修复

    <script>
       window.__INITIAL_STATE__ = <%- JSON.stringify(initialState) %>;
    </script> 

【问题讨论】:

  • 你能试着把ejs表达式放在window.__INITIAL_STATE__ = '&lt;%- JSON.stringify(initialState) %&gt;';这样的引号中
  • 是的,这行得通
  • 嗨莱莉,我已经添加了与答案相同的内容。如果您发现它有用,请标记为已接受的答案。 :)

标签: reactjs server client ejs server-side-rendering


【解决方案1】:

我建议你改变方法并将JSON.stringify放入

<script id="__INITIAL_STATE__" type="application/json"> 
    {JSON.stringify(data).replace(/</g,'\\u003c')}
</script>

在客户端就这样做

const state = JSON.parse(document.getElementById('__INITIAL_STATE__').textContent)

根据 chrome 开发人员的说法,它是更快的解决方案,而且您不会得到任何与报价相关的惊喜。

使用 JSON.parse 更快的应用程序(Chrome 开发者峰会 2019):https://www.youtube.com/watch?v=ff4fgQxPaO0

【讨论】:

    【解决方案2】:

    您需要将表达式用引号括起来,如下所示,

    <script>
      window.__INITIAL_STATE__ = '<%- JSON.stringify(initialState) %>';
    </script> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 2018-01-10
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多