定义 React 组件
class Greeting extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
声明默认属性
无论是函数组件还是 class 组件,都拥有 defaultProps
属性:
class Greeting extends React.Component {
// ...
}
Greeting.defaultProps = {
name: 'Mary'
};
初始化 State
如果使用 ES6 的 class 关键字创建组件,你可以通过给 this.state
赋值的方式来定义组件的初始 state:
class Counter extends React.Component {
constructor(props) {
super(props);
this.state = {count: props.initialCount};
}
// ...
}
绑定
对于使用 ES6 的 class 关键字创建的 React 组件,组件中的方法遵循与常规 ES6 class 相同的语法规则。这意味着这些方法不会自动绑定 this
到这个组件实例。 你需要在 constructor 中显式地调用 .bind(this)
:
class SayHello extends React.Component {
constructor(props) {
super(props);
this.state = {message: 'Hello!'};
// 这一行很重要!
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
alert(this.state.message);
}
render() {
// 由于 `this.handleClick` 已经绑定至实例,因此我们才可以用它来处理点击事件
return (
<button onClick={this.handleClick}>
Say hello
</button>
);
}
}