在 ES6 类 中使用 ES2016 属性 Initializer Syntax 是一个好的 React 模式吗
Is it a good React pattern to use ES2016 Property Initializer Syntax in ES6 classes
我在 egghead.io 上看了一节关于 [Use ES2016 Property Initializer Syntax in ES6 classes] 的课,我不太确定 - 使用它是不是一个好习惯。
这是上面提到的课程中的常规有状态 React 组件:
class App extends Component {
constructor() {
super()
this.state = {
todos: [],
currentTodo: ''
}
}
this.handleInputChange = this.handleInputChange.bind(this)
handleInputChange (evt) {
this.setState({
currentTodo: evt.target.value
})
}
render() {
return (
...
<TodoForm handleInputChange={this.handleInputChange}
currentTodo={this.state.currentTodo}
<TodoList todos={this.state.todos}/>
...
);
}
}
这是使用 ES2016 语法的相同重构组件:
class App extends Component {
state = {
todos: [],
currentTodo: ''
}
handleInputChange = (evt) => {
this.setState({
currentTodo: evt.target.value
})
}
render() {
return (
...
<TodoForm handleInputChange={this.handleInputChange}
currentTodo={this.state.currentTodo}
<TodoList todos={this.state.todos}/>
...
);
}
}
是的,使用它是一个很好的习惯。
当 属性 初始化程序为您完成绑定时,没有理由手动执行绑定:代码更清晰,您不会将代码与其他一行指令分散在一起。
我在 egghead.io 上看了一节关于 [Use ES2016 Property Initializer Syntax in ES6 classes] 的课,我不太确定 - 使用它是不是一个好习惯。 这是上面提到的课程中的常规有状态 React 组件:
class App extends Component {
constructor() {
super()
this.state = {
todos: [],
currentTodo: ''
}
}
this.handleInputChange = this.handleInputChange.bind(this)
handleInputChange (evt) {
this.setState({
currentTodo: evt.target.value
})
}
render() {
return (
...
<TodoForm handleInputChange={this.handleInputChange}
currentTodo={this.state.currentTodo}
<TodoList todos={this.state.todos}/>
...
);
}
}
这是使用 ES2016 语法的相同重构组件:
class App extends Component {
state = {
todos: [],
currentTodo: ''
}
handleInputChange = (evt) => {
this.setState({
currentTodo: evt.target.value
})
}
render() {
return (
...
<TodoForm handleInputChange={this.handleInputChange}
currentTodo={this.state.currentTodo}
<TodoList todos={this.state.todos}/>
...
);
}
}
是的,使用它是一个很好的习惯。 当 属性 初始化程序为您完成绑定时,没有理由手动执行绑定:代码更清晰,您不会将代码与其他一行指令分散在一起。