【发布时间】:2019-11-27 15:48:26
【问题描述】:
我正在尝试遵循 React 中的一些最佳实践,并且想知道使用 ES6 classes 时 React 组件的解剖结构以及在哪里声明事物,特别是类或 .js 文件将要声明的变量或属性使用。
我一直在这里阅读各种答案,并想出了几件事:
在 ES6 中直接对类初始化属性是不可能的,目前只能以这种方式声明方法。同样的规则也适用于 ES7。
https://stackoverflow.com/a/38269333/4942980
每次渲染都会在渲染方法中创建一个函数,这会对性能造成轻微影响。如果你把它们放在渲染中也会很乱
...更喜欢只在 render 中放置专门处理渲染组件和/或 JSX 的函数(即映射到 prop、根据 prop 有条件地加载适当组件的 switch 语句等...)。如果函数背后的逻辑很繁重,我就不渲染了。
https://stackoverflow.com/a/41369330/4942980
https://stackoverflow.com/a/42645492/4942980
此外,构造函数应该只创建和初始化一个新实例。它应该设置数据结构和所有特定于实例的属性,但不执行任何任务。
https://stackoverflow.com/a/24686979/4942980
这是否意味着类的所有变量,不是方法并且不属于render@ 属于类构造函数?
我的理解是这样的:
class Counter {
constructor(){
this.count = 0;
}
}
和这个是一样的:
class Counter {
count = 0;
}
来源:https://stackoverflow.com/a/47960459/4942980
我见过我的朋友写这样的代码:
let count = 0;
class Counter extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<span>{count}</span>
)
}
}
ReactDOM.render(<Counter />, document.getElementById("root"));
也就是说,它们习惯于用let/const/var声明变量,并在类外声明属性(或本例中的变量),然后根据需要将其粘贴到类中,因此.js文件填充变量,有时是方法,然后中途是调用它们的类。
来自更多的面向对象背景,这在我看来是错误的吗?他们是正确的吗?所有的属性都应该放在构造函数中还是放在类中(如果它们不显式处理渲染)还是放在 render 方法中(如果有的话)?或者可以使用变量关键字如let然后声明它们是否可以使用它们的范围根据需要将它们放入类中,无论是构造函数、渲染方法等吗?如果每个.js 文件只有一个类,这或多或少会好吗?
谢谢!
【问题讨论】:
标签: javascript reactjs