reactjs - renderToNodeStream [object Object] 服务器端渲染
问题描述
ReactDOMServer.renderToNodeStream(
<Html
helmet={Helmet.renderStatic()}
window={{
__STATE__: ctx.store.getState()
}}
css={css}
scripts={scripts}
locale={ctx.locale}
url={ctx.request.url}
dynamicData={dynamicData}
>
{components}
</Html>
)
我找不到这个问题的原因。我想切换到,renderToNodeStream
但它的工作方式有点不同renderToStaticMarkup
,我找不到它。
解决方案
您不能将商店作为 json 对象传递给 html 标记。您可以使用 JSON.stringify 并像这样附加商店,
`window={{
__STATE__: JSON.Stringify(ctx.store.getState())
}}`
如果商店包含从 API 响应呈现的任何恶意脚本标记,则也会在 HTML 中执行。为了避免这种跨站点脚本(XSS),我强烈建议导入serialize
( serialize-javascript
) 包并像这样使用它。
`window={{
__STATE__: serialize(ctx.store.getState())
}}`
序列化将确保 HTML 字符和 JavaScript 行终止符自动转义。
推荐阅读
- kernel - 运行时和内核之间的区别?
- javascript - 将两个列表转换为 json
- r - 响应变量超出范围 -> 在 r LOGNO 中使用 gamlss
- javascript - 如何在某些点启用垂直和水平鼠标滚轮滚动
- android - 目标 - 领域同步会话 5 分钟后断开连接,需要 2 分钟才能重新连接
- influxdb - 如何在 InfluxDB/Kapacitor 中定义异常警报
- matlab - 对齐给定图像的 RGB 通道(使用 SSD)以生成彩色且正确对齐且清晰的图像
- javascript - 如何使用来自一个站点的表单数据登录到另一个站点上的另一个表单?
- sql - 如何在不同的列上连接同一个表
- pandas - 从不同类型的熊猫中去除异常值