我尝试导入一个文件(ChildFile),其中包含一个变量(testNumber)和一个函数(changeNumber())。该函数应将(testNumber)增加1。此(ChildFile)由文件(ConsumerFile)导入。我在渲染器中尝试调用该函数(changeNumber())。
预期结果:
testNumber增加1,结果124
实际结果:
函数调用前后的testNumber为123
信息:我需要以下应用程序结构-> ConsumerFile必须位于其结构中。没有setState可能(在我的特定情况下,我尝试为不同的类定义smth。)
这两个文件:
子文件
let testNumber = 123;
const changeNumber = () => {
console.log(testNumber); //123
testNumber = testNumber + 1;
console.log(testNumber); //124
}
var ChildFile= {
testNumber: testNumber,
changeNumber: changeNumber
};
export {ChildFile};
消费者档案
import { ChildFile } from '....ChildFile';
class ConsumeClass extends Component {
constructor() {
super();
}
render() {
console.log(ChildFile.testNumber); //123
ChildFile.changeNumber();
console.log(ChildFile.testNumber); //123 -> Here it should be 124
return (
<div/>
);
}
}
export default ConsumeClass;
最佳答案
用
var ChildFile= {
testNumber: testNumber,
changeNumber: changeNumber
};
您正在使用属性
ChildFile
创建值为testNumber
的名为testNumber
的新对象。但是,然后在您的方法中修改原始的全局变量,而不是属性。这将工作:
let testNumber = 123;
var ChildFile = {
testNumber: testNumber,
};
const changeNumber = () => {
console.log(testNumber); //123
ChildFile.testNumber = ChildFile.testNumber + 1;
console.log(testNumber); //124
}
ChildFile.changeNumber = changeNumber;
export {ChildFile};
但是您最好使用
class
。关于javascript - 导入文件的变量未更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50059047/