javascript - 全局导入的变量未定义
问题描述
我的FinalVariables.js中有三个变量,如下所示:
var finalTaskName = 'abc'
var finalQuantityTaskExecuted = 0
var finalQuantityTaskCompletion = 100
export {finalTaskName, finalQuantityTaskExecuted, finalQuantityTaskCompletion}
在另一个文件中,我使用以下行导入它们:
import {finalTaskName,finalQuantityTaskExecuted,finalQuantityTaskCompletion} from './FinalVariables'
但是,当我尝试在另一个文件中使用上述三个变量中的任何一个时,它们总是undefined
. 是否有一个原因?
我是 Javascript 和 React 的新手,任何帮助将不胜感激!谢谢!
-------------------------------------------------- - - - - - - - - - - - - - - - - - - - - -更新 - - - - -------------------------------------------------- ---
我按如下方式导入了变量:
import * as finalVariables from './FinalVariables'
当我做一个
console.log(finalVariables.finalTaskName)
我能够打印正确的值,但是当我尝试为其分配值时:
finalVariables.finalTaskName = this.props.item[0].particulars
我收到以下错误:
无法设置只有 getter 的 # 的属性 finalTaskName
=============================更新==================== ===================
我现在能够正确更新值,但是在我导入这些值的主类 TasksInsert.jsx 中,我在渲染函数中有这个,
<p>{finalVariables.finalTaskName}</p>
<p>{finalVariables.finalQuantityTaskExecuted}</p>
<p>{finalVariables.finalQuantityTaskCompletion}</p>
为什么这些值没有根据最近的变化反映出来?我的状态构造函数如下所示:
this.setState({ finalVariables })
-------------------------------------------------- - - - - - - - - - - 更新 - - - - - - - - - - - - - - - --------
我对一个名为 BOQSuggestions 的全局数组采用了类似的方法,我将数据推送到该数组并且它有效,也就是说,对它的更改会在全局范围内反映出来。
另外,这是我唯一需要共享数据的地方,这就是我不想使用 Redux 的原因。
任何人都可以建议代码来解决这个问题吗?我仍然被困在这里,并且是 Javascript 的新手。
解决方案
模块导出在设计上是只读的。如果你想要一些全局可变状态,你应该通过从模块中导出一个可变对象来做到这一点:
// final-vars.js
export default {
finalTaskName: 'abc',
finalQuantityTaskExecuted: 0,
finalQuantityTaskCompletion: 100
};
// other.js
import finalVariables from './final-vars';
// ...
finalVariables.finalTaskName = this.props.item[0].particulars // Allowed
推荐阅读
- javascript - Shape.so动画插画师的json动画效果如何
- mysql - 如何将 MySQL 数据库中的数据填充到 python 中的树视图中?
- c - 如何使线程按顺序运行?(OpenMP)
- qt - QGeometryRenderer的setVertexCount API及其对光线投射结果的影响
- c++ - 在较小角度的圆上找到两点之间的点
- python - Python Whoosh 多字段解析器日期和字符串
- angular - 如果输入 setValue,角度垫自动完成不显示
- cluster-analysis - k-means 聚类中是否存在重叠?
- c# - 无边框winform窗体阴影
- regex - 使用 perl 搜索字符串并将搜索到的字符串保存在数组中