当组件只需要调度一个动作创建者时使用啥模式?

Posted

技术标签:

【中文标题】当组件只需要调度一个动作创建者时使用啥模式?【英文标题】:What pattern to use when a component only needs to dispatch an action creator?当组件只需要调度一个动作创建者时使用什么模式? 【发布时间】:2017-05-06 05:47:13 【问题描述】:

我有一个不需要访问全局状态的组件,但确实需要调度一个动作创建者。

似乎有两种选择:

使用 react-redux connect() 并通过 mapStateToProps 传递全局状态并通过 mapDispatchToProps 传递我的动作创建者 - 据我所知,虽然这样传递全局状态并不是一个好主意李> 不使用 react-redux connect() 而是使用 this.props.dispatch

还有其他选择吗?

【问题讨论】:

【参考方案1】:

你可以只传递null,而不是mapStateToProps函数。

实现目标的方法有:

1.只注入dispatch函数,不要听store

export default connect()(Component);

然后在组件中

this.props.dispatch(actionCreator());

2.注入actions creators,不要听store

import * as actionCreators from './actionCreators'

export default connect(null, actionCreators)(Component);

然后在组件中

this.props.actionCreator();

顺便说一句,您永远不应该传递全局状态。它会扼杀任何性能优化,因为组件会在每次操作后重新渲染。

【讨论】:

以上是关于当组件只需要调度一个动作创建者时使用啥模式?的主要内容,如果未能解决你的问题,请参考以下文章

如何将调度函数引用和动作创建者作为任何连接组件内的道具

当一个动作被派发时做某事

如何响应 redux 中的状态变化并派发另一个动作?

动作调度不更新 Redux/React 中的状态

java中的paintComponent啥时候被调用

Vue js 2 - 在组件中调度的操作的回调函数