默认配置 defaultProps

默认配置通过 ​​||​​​ 操作符可以实现,React.js 也提供了一种方式 ​​defaultProps​​,可以方便的做到默认配置。

class LikeButton extends Component {
static defaultProps = {
likedText: '取消',
unlikedText: '点赞'
}

constructor () {
super()
this.state = { isLiked: false }
}

handleClickOnLikeButton () {
this.setState({
isLiked: !this.state.isLiked
})
}

render () {
return (
<button onClick={this.handleClickOnLikeButton.bind(this)}>
{this.state.isLiked
? this.props.likedText
: this.props.unlikedText} 👍
</button>
)
}
}

​defaultProps​​​ 作为点赞按钮组件的类属性,里面是对 ​​props​​​ 中各个属性的默认配置。这样我们就不需要判断配置属性是否传进来了:如果没有传进来,会直接使用 ​​defaultProps​​​ 中的默认属性。 所以可以看到,在 ​​render​​​ 函数中,我们会直接使用 ​​this.props​​ 而不需要再做判断。

有状态组件和无状态组件的选择

我们尽量多地写无状态组件,尽量少地写有状态的组件。这样会降低代码维护的难度,也会在一定程度上增强组件的可复用性。