我尝试导入一个文件(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/

10-09 16:22