javascript - 在客户端重新渲染组件时如何从服务器端渲染访问 Prop ?

标签 javascript node.js reactjs server-side-rendering isomorphic-javascript

我做了很多研究,但没能成功。

它基于 express.js 并在同构应用程序中使用react。

我使用 renderToString() 来解析我的组件并将其发送回客户端。

let passedProps = {'foo':'bar'};

const html = ReactDOMServer.renderToString(
            React.createElement(myComponent, passedProps)
    );
res.send(renderFullPage(html, passedProps));

我必须在客户端重新渲染它以激活事件处理程序。

function renderFullPage(html, passedProps) {
  return `
        <!DOCTYPE html>
        <html lang="en">
          <head>
            ........
          </head>
          <body>
            <div id="root">${html}</div>
          ......
            <script>
             function render() {
                ReactDOM.render(
                  React.createElement(
                    myComponent,
                    ${passedProps}
                  ),
                  document.querySelector('#root')
                );
             }
            render();

            </script>
          </body>
        </html>`;
}

问题是我想让客户端呈现与服务器端具有相同的初始 Prop {'foo':'bar'} 。但似乎我不能真正在 html < script > 标签内传递 ${passedProps} ,程序将跳过执行其中的代码,因此客户端渲染将无法正常工作。

有什么方法可以访问 < script > 中的 passedProps 吗?

非常感谢任何类型的建议!!

最佳答案

我的真实项目中有类似的东西:

<script>window.__INITIAL_PROPS__ = JSON.stringify(${passed_props})</script>

您正在获取这些 Prop 并将它们传递到客户端的 react.js 中。 希望对您有所帮助。

关于javascript - 在客户端重新渲染组件时如何从服务器端渲染访问 Prop ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50264943/

相关文章:

javascript - 在设备的默认浏览器中打开链接。人行横道安卓应用

javascript - 使用 javascript 中的折衷库对句子进行复数/单数化

javascript - 增加数组中元素的值

reactjs - Grommet UI——自定义配色方案

javascript - Gatsby JS - 多个页面拉入不同类别的 Markdown 文件

javascript - 使用 Javascript 设置边界半径(每个 Angular )

javascript - 如何监控 Node.js 的内存使用情况?

node.js - 为什么这些 chai 测试不会失败?

node.js - Firebase 云消息传递 android 优先级属性

html - Bootstrap 对齐输入字段