Javascript JS文件中React组件类之外的代码何时运行?
假设我有一个JS文件包含2个React组件类定义和一系列其他内容:Javascript JS文件中React组件类之外的代码何时运行?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,假设我有一个JS文件包含2个React组件类定义和一系列其他内容: // a file called OuterComponent.react.js import xxx from xxx; import yyy from yyy; // When does these run? let a = 0; a = 1; export default class OuterComponent extends React.PureComponent<> { render() {
// a file called OuterComponent.react.js
import xxx from xxx;
import yyy from yyy;
// When does these run?
let a = 0;
a = 1;
export default class OuterComponent extends React.PureComponent<> {
render() {
return (
<View>
<InnerComponent />
</View>
);
}
}
class InnerComponent extends React.PureComponent<> {
//... something
}
//名为OuterComponent.react.js的文件
从xxx进口xxx;
从yyy导入yyy;
//什么时候开始?
设a=0;
a=1;
导出默认类OuterComponent扩展React.PureComponent{
render(){
返回(
);
}
}
类InnerComponent扩展了React.PureComponent{
//……什么
}
问题
export let a = 0;
进口:
import { a } from './filename.js';
问题3:创建多个文件实际上意味着什么?(除了为了更好的可读性,它将大块代码分成小块)它还有其他区别吗
- 把代码分成小块李>
- 允许重用;及
- 启用非导出变量/函数的封装
a.js
仅加载一次,即使它是通过b.js
和c.js
导入的。还可以查看它是如何导出和导入的,以及当它发生更改时,如何在其他模块中拾取更改。好的,在这里
回答1:是的,它在导入此文件时运行
回答2:您可以定义一些变量并将其导出到其他文件中使用,但我们对不随时间变化的常量值执行此操作,如操作类型等,您在这里所指的不是它的用途,您希望使用react Context或Redux store进行此操作
回答3:创建多个文件是一种模块化的编码方法,强调组合,这是在另一个组件中组合组件的全部要点,并构建一个应用程序
export
关键字在js中共享一个变量,如下所示:
export let a=0
对此变量的更改不会重新加载组件,因为它不是任何状态的一部分对于问题3,这是否意味着,对于JS,每个文件都像其他语言一样是一个“名称空间”或“包”?是的,有点像。不是真正的名称空间,因为在某些语言中名称空间/包充当前缀。它更像是封装,真的。未导出的内容保证无法从外部访问。类似地,如果您想在模块内使用某些内容,则必须导入它(或使用全局变量,这取决于环境--浏览器、节点等)。啊,考虑到每个模块都有一组标识符,因此可以将其视为名称空间,这意味着模块
a.js
中声明的一个标识符a
不会与模块b.js
中声明的标识符a
冲突。(即使a.js
导出其a
,您也可以在b.js
中使用不同的名称导入它,而不是a
)是的,它会运行,否则模块加载器将不知道该文件实际导出了该组件。关于从b.js
更改a.stuff
,您确实不能,因为导入会在导入程序的作用域中创建常量标识符。如果您试图更改它,您应该会得到一个错误(只是不知道这个错误是否在所有浏览器和节点中都是标准化的)。