mapStateToProps是反模式吗?

时间:2019-10-10 09:49:24

标签: reactjs react-native redux react-redux

与道具和状态有关的问题有很多,但我仍然感到困惑。 简而言之,文档和答案都同意道具应该是不变的且状态可变的。 但是mapStateToProps的整个思想是能够在状态改变时更新道具;然后触发重新渲染?那么为什么存在这种至关重要的方法呢?

我需要显示一个模式通知弹出窗口。一旦将数据添加到状态中,并且仅当存在这样的通知时,才应显示该通知。

function mapStateToProps(state) {
    return {
        notifications: getNotifications(state),
    };
}

问题: 根据最佳实践,我应该在render()中使用状态访问,因为状态可能随时更改。即this.state.notifications。但是mapStateToProps从不更新组件的状态。因此,要获得理想的效果,我需要使用this.props.notifications-反模式。

render() {
   return (
        {this.props.notifications.length > 0 && (
        <Notification
            isVisible={this.props.notifications.length > 0}
            title={this.props.notifications[0].title}
        />
        )}

       <SomeOtherAlwaysVisibleViews />
);

以上工作正常。我不明白为什么我应该在prop更改上触发并使用setState,而只是在render()中使用state而不是props?

0 个答案:

没有答案