Javascript 全局导入的变量未定义

Javascript 全局导入的变量未定义,javascript,reactjs,Javascript,Reactjs,我的FinalVariables.js中有三个变量,如下所示: var finalTaskName = 'abc' var finalQuantityTaskExecuted = 0 var finalQuantityTaskCompletion = 100 export {finalTaskName, finalQuantityTaskExecuted, finalQuantityTaskCompletion} import * as finalVariables from './Fina

我的FinalVariables.js中有三个变量,如下所示:

var finalTaskName = 'abc'
var finalQuantityTaskExecuted = 0
var finalQuantityTaskCompletion = 100

export {finalTaskName, finalQuantityTaskExecuted, finalQuantityTaskCompletion}
import * as finalVariables from './FinalVariables' 
在另一个文件中,我使用以下行导入它们:

import {finalTaskName,finalQuantityTaskExecuted,finalQuantityTaskCompletion} from './FinalVariables'
但是,当我试图在另一个文件中使用上述三个变量中的任何一个时,它们总是
未定义的
。
这有什么原因吗

我对Javascript和React都是新手,任何帮助都将不胜感激!谢谢大家!

-------------------------------------------------------------------------------------------更新-------------------------------------------------------------

我导入的变量如下:

var finalTaskName = 'abc'
var finalQuantityTaskExecuted = 0
var finalQuantityTaskCompletion = 100

export {finalTaskName, finalQuantityTaskExecuted, finalQuantityTaskCompletion}
import * as finalVariables from './FinalVariables' 
当我做一个
console.log(finalVariables.finalTaskName)

我可以打印正确的值,但当我尝试为其赋值时:

finalVariables.finalTaskName = this.props.item[0].particulars 

我得到以下错误:

无法设置#的finalTaskName属性,该属性只有一个getter

===========================================更新======================================

我现在能够正确地更新这些值,但是在我导入这些值的主类TasksInsert.jsx中,我在render函数中有这个

<p>{finalVariables.finalTaskName}</p> 
<p>{finalVariables.finalQuantityTaskExecuted}</p> 
<p>{finalVariables.finalQuantityTaskCompletion}</p> 

---------------------------------------------------------------------更新--------------------------------------


我对一个名为BOQSuggestions的全局数组采用了类似的方法,我将数据推送到该数组中,它起了作用,即对数据的更改在全局范围内得到了反映

另外,这是我唯一需要共享数据的地方,这就是我不想使用Redux的原因


有人能推荐代码来解决这个问题吗?我仍然停留在这里,不熟悉Javascript。

模块导出是设计为只读的。如果需要某种全局可变状态,应通过从模块导出可变对象来实现:

// final-vars.js

export default {
  finalTaskName: 'abc', 
  finalQuantityTaskExecuted: 0, 
  finalQuantityTaskCompletion: 100
};

您可以在
FinalVariables.js
文件中创建函数,如下所示:

const setFinalTaskName=(value)=>finalTaskName=value
将其从组件中导出并调用为:

setFinalTaskName(--新值--)

导出默认值?如果我这样做,我会收到消息“尝试导入错误:finalQuantityTaskCompletion”不是从“/FinalVariables”导出的。您可以共享更多代码,只是为了检查一下。您可以尝试从“/FinalVariables”导入一些变量
console.log(someVars)要查看导入的内容,为什么要尝试为导入设置值?谢谢@Jacob。我现在能够正确地更新这些值,但是在我导入这些值的主类TasksInsert.jsx中,我在渲染函数中有它,{finalVariables.finalquantitytaskname}

{finalVariables.finalQuantityTaskExecuted}

{finalVariables.finalQuantityTaskCompletion}

为什么这些值没有根据最近的变化反映出来?我的状态构造函数如下所示:this.setState({finalVariables,})您的期望是,如果其他内容更改这些变量,您的UI将响应这些更改?JavaScript并不是这样工作的。我不认为易变的全局变量是你来这里的方式。如果您想让UI响应变量更改,那么您需要一些可以订阅的内容。对于可以响应的共享状态,这就是
redux
和context等解决方案的作用。我对名为BOQSuggestions的全局数组采用了类似的方法,我将数据推送到了该数组中,结果成功了,也就是说,它的变化在全球范围内得到了反映。另外,这是我唯一需要共享数据的地方,这就是我不想使用Redux的原因。有人能推荐代码来解决这个问题吗?我仍然停留在这里,对Javascript还不熟悉。