我的 FinalVariables.js 中有三个变量,如下所示:
var finalTaskName = 'abc'
var finalQuantityTaskExecuted = 0
var finalQuantityTaskCompletion = 100
export {finalTaskName, finalQuantityTaskExecuted, finalQuantityTaskCompletion}
在另一个文件中,我使用以下行导入它们:
import {finalTaskName,finalQuantityTaskExecuted,finalQuantityTaskCompletion} from './FinalVariables'
但是,当我尝试在另一个文件中使用以上三个变量中的任何一个时,它们始终为undefined
。
是否有一个原因?
我是Java和React的新手,我们将不胜感激!谢谢!
-------------------------------------------------- - - - - - - - - - - - - - - - - - - - - - - 更新 - - - -------------------------------------------------- ------
我按如下所示导入了变量:
import * as finalVariables from './FinalVariables'
当我做一个
console.log(finalVariables.finalTaskName)
我能够打印正确的值,但是当我尝试为其分配值时:
finalVariables.finalTaskName = this.props.item[0].particulars
我遇到以下错误:
不能设置#属性只有一个吸气剂的finalTaskName
============================更新================= =====================
我现在能够正确更新值,但是在要导入这些值的主类TasksInsert.jsx中,我在render函数中有此值
<p>{finalVariables.finalTaskName}</p>
<p>{finalVariables.finalQuantityTaskExecuted}</p>
<p>{finalVariables.finalQuantityTaskCompletion}</p>
为什么这些值不能根据最近的变化反映出来?我的状态构造函数如下所示:
this.setState({ finalVariables })
-------------------------------------------------- - - - - - - - - - - - 更新 - - - - - - - - - - - - - - -----------
我对名为BOQSuggestions的全局数组采用了类似的方法,我向其推送数据并对其起作用,即对它的更改已在全球范围内反映出来。
另外,这是我唯一需要共享数据的地方,这就是为什么我不想使用Redux。
有人可以建议代码来解决此问题吗?我仍然停留在这里,对Java语言还是陌生的。
答案 0 :(得分:3)
模块导出在设计上是只读的。如果需要某种全局可变状态,则应通过从模块导出可变对象来实现:
// 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
答案 1 :(得分:1)
您可以在FinalVariables.js
文件中创建一个函数,如下所示:
const setFinalTaskName = (value)=>finalTaskName=value
导出并通过以下方式从您的组件中调用
:setFinalTaskName(--new-value--)