javascript - 如果我们已经有了dispatch作为props,为什么还需要mapDispatchToProps呢?

标签 javascript reactjs redux

我真的不明白为什么会有所不同。让我举个例子来说明我的意思:

//actions.js
export const doSthOnClick = () => {
  return {
    type: 'ACTION'
  }
}

//example.js
import {doSthOnClick} from './actions';

//...

//handle click first option
handleClick = () => {
  this.props.doSthOnClick() //from mapDispatchToProps
}

//handle click second option
handleClick = () => {
  this.props.dispatch(doSthOnClick()) //the imported
}

//...

<div onClick={handleClick}></div>

//...

const mapDispatchToProps = (dispatch) => {
  doSthOnClick: () => dispatch(doSthOnClick)
}

//connect

我知道如果我们使用mapDispatchToProps,组件现在会将调度作为属性获取,但是有什么重要的区别吗?

最佳答案

通过mapDispatchToProps,您可以直接在组件中使用映射的 props。 (即,您不需要显式实现 handleClick 作为 doSthOnClick 的包装器。)

此外,如果演示者和容器分开良好,则容器主要仅用于分派(dispatch)操作,从而产生更清晰的代码。您最终可能不需要处理 props.dispatch

关于javascript - 如果我们已经有了dispatch作为props,为什么还需要mapDispatchToProps呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51180013/

相关文章:

javascript - 在 Chrome 扩展内的 iframe 内执行父窗口 JS

javascript - 使用 Node 和 ffmpeg 将以编程方式创建的视频流式传输到 youtube

javascript - 如何在 HTML 文档而不是 DOM 上使用 jQuery?

javascript - 在 jQuery 插件中调用外部函数

javascript - 有没有办法在不调用 setParams (react-navigation) 的情况下重新渲染导航栏?

javascript - Antd Modal如何更新其中的值

javascript - 表悬停( Bootstrap )不适用于 react

javascript - Redux 访问 mapStateToProps 中对象列表中的正确项目

reactjs - 为 Webpack 生产环境实现 history-api-fallback

javascript - Redux 商店没有更新