导入文件的变量未更新

时间:2018-04-27 09:12:00

标签: javascript reactjs react-native

我尝试导入文件 ChildFile ),其中包含变量 testNumber )和< strong>功能( changeNumber())。 功能应将( testNumber )增加1.此( ChildFile )由文件(< EM> ConsumerFile )。在渲染内部,我尝试调用函数 changeNumber())。

预期结果 testNumber 增加1,结果为124

实际结果 testNumber 在函数调用之前和之后是123

信息: 我需要以下应用程序结构 - &gt; ConsumerFile需要处于结构中。没有setState可能(在我的特定情况下,我尝试为不同的类定义smth。)

这两个文件:

ChildFile

&#13;
&#13;
let testNumber = 123;

const changeNumber = () => {
	console.log(testNumber);  //123
	testNumber = testNumber + 1;
	console.log(testNumber); //124
}

var ChildFile= {
	testNumber: testNumber,
	changeNumber: changeNumber
};

export {ChildFile};
&#13;
&#13;
&#13;

ConsumerFile

&#13;
&#13;
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;
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

使用

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