javascript - 将包含函数的变量从 pug 传递给反应组件
问题描述
问题
如何将包含 pug 文件中的函数的变量(我不认为它特定于 .pug 文件)传递给反应组件?
路由.js
const login = () => { ... 'log the user in here' ... };
app.get('/test', (req,res) => {
res.render('page.pug', {varName: {list_test: ['hello', 'goodye'], login_func: login}});
page.pug
body
script.
var data = !{JSON.stringify(varName)}
文件.jsx
// Imagine this being called from a react component's constructor
console.log(data);
(file.jsx) 控制台输出:{list_test: ['hello, 'goodye']}
注意函数'login'(以及它的关联键'login_func')已经从变量中消失了?!
当变量包含函数时,下面列出的链接问题的答案不起作用,但它适用于字符串、数字、列表和对象。因此,这不是以下任何内容的重复:
这有点道理(我考虑问题可能是什么 - 我可能错了)
当您对 JSON 对象进行字符串化时,我想将字符串转换为函数会很麻烦:
function sayHello() { console.log('Hello') }
var string = "sayHello"
现在以某种方式再次将该字符串转换为非字符串并指向 sayHello 函数会导致问题 - 这就是我的想法。
解决方案
使用环境变量
哈巴狗->环境变量->反应
Create React App 构建允许在应用程序中使用环境变量。要添加环境变量,请在项目的根目录中创建一个 .env 文件,然后添加适当的变量并在变量名称前加上 REACT_APP_。例如:
REACT_APP_MYVAR = "someString" 在应用程序中,可以使用 {process.env.REACT_APP_MYVAR} 在您的组件中访问这些变量,或者使用 %REACT_APP_MYVAR% 在 HTML 中访问这些变量。
因此,为了从 pug 发送一个变量来做出反应,您所要做的就是首先将您的变量传递给环境变量,然后让您的反应文件访问该环境变量。
推荐阅读
- spring-boot - 在 SpringBoot 2.4.3 中使用 Feign 和 Oauth2 时不推荐使用的方法
- php - 如何将我的 WooCommerce 购物车费用调整为仅适用于特定金额
- json - Kibana - 使用脚本语言解析/聚合总值
- php - PHP 评估代码在本地范围内引发“无法重新声明函数”错误
- c# - Migradoc:在页面末尾的一定距离内添加分页符
- flutter - Flutter pod 文件冲突修复
- c# - 将 json 反序列化到我的 C# 对象中会出错
- javascript - 服务器以“application/octet-stream”的非 JavaScript MIME 类型进行响应 对每个 HTML 的模块脚本强制执行严格的 MIME 类型检查
- python - 如何从 selenium 的 span 元素中获取文本?
- python - 刷新后存储 HTML 字段数据