javascript - 如何在 react-express 节点应用程序中将对象从服务器发送到客户端组件
问题描述
如何将 JS 对象从Express
后端发送到客户端React
组件?
res.locals
我可以通过将它们设置为or来发送简单的变量cookies
,但是对于较大的对象,我该怎么做?
不支持 API,因为它会导致页面加载,然后请求使用户在屏幕上等待。我的详细信息在服务器启动后立即可用。
代码流程简述:
它是一个海妖应用程序,如果我这样做,在服务器端,
router.get('/', (req, res) => res.render('index'))
,
ejs
webpack
在 express 配置中设置为视图引擎,它将通过添加捆绑的反应代码将索引文件返回给浏览器。
解决方案
一般来说,建议公开一个 API,以便 React 接口可以更新数据,例如当用户导航页面时,无需重新加载整个页面。React 在构建时特别考虑了 SPA,并且 React 的很大一部分致力于管理对页面结构的增量更新。
但是,如果您想在加载时向您的反应页面提供一些数据,您可以使用脚本标签和 JSON 传递它,如下所示:
在您的模板中:
<script>
window._myInitialState = JSON.parse("{initialState|js|j|s}");
<script>
(这是使用js
(JSON.stringify)、j
(JavaScript 字符串)和s
(不要转义 HTML)内置灰尘过滤器)来呈现您的数据。例如res.locals.initialState
设置为
{
users: [
{ name: "Test" },
{ name: "Toast" },
{ name: "Foo" },
{ name: "Bar" },
]
}
它应该 JSON 将其编码为以下脚本:
<script>
window._myInitialState = JSON.parse("{\"users\":[{\"name\":\"Test\"},{\"name\":\"Toast\"},{\"name\":\"Foo\"},{\"name\":\"Bar\"}]}");
<script>
有了这个在你的模板中,你应该能够window._myInitialState
在你的 React 代码中访问,例如将它加载到你的根组件中,如下所示:
componentDidMount() {
this.setState(window._myInitialState);
}
推荐阅读
- amazon-web-services - 将 Namecheap 区域文件导入 AWS Route53
- python - 如何修复 cm.spectral(模块 'matplotlib.cm' 没有属性 'spectral')?
- jquery - 如何在 TypeScript 中为“window”和“document”创建 jQuery 对象?
- wordpress - woocommerce - 在查看订单页面中显示产品
- javascript - 如果传递不同的参数,为什么 console.log 会得到不同的结果?
- android - 可绘制合身
视图的宽度,同时保持纵横比 - java - libgdx FrameBuffer 是如何工作的
- jquery - 通过键盘操作从 textarea 提交表单的快捷方式
- http - 如何在 Go 中使用不记名令牌发出请求
- python - apa102 LED 亮度控制