javascript - React/redux 具有相同容器的多个组件

标签 javascript reactjs ecmascript-6 redux react-redux

我是这个技术栈的新手,但我对某些事情感到困惑:

我有一个 react 容器来处理应在应用程序中向用户显示的 View :

const mapStateToProps = (state) => {
  return {
    currentScreen: state.currentScreen
  }
}

并处理应用何时应更改当前屏幕:

const mapDispatchToProps = (dispatch) => {
  return {
    changeScreen: (newScreen) => {
      dispatch(changeScreen(newScreen))
    }
  }
}

但是是“已连接”connect()仅适用于 App 组件:

import App from '../components/App'

const AppScreen = connect(
  mapStateToProps,
  mapDispatchToProps
)(App)

如何与所有组件共享 changeScreen 函数?

最佳答案

创建一个新文件 actions.js,这样就可以从任何地方调用这个 Action 。 例如:

export function changeScreen(newScreen){
    return({
        your code here....
    });

}

现在在您的 APP 组件中(或者您可以从任何其他组件共享)

import { changeScreen } from './actions';
import { bindActionCreators } from 'redux';

并使用 bindActionCreators 进行分派(dispatch)

function mapDispatchToProps(dispatch){
  return bindActionCreators({ changeScreen }, dispatch);
}

希望这对您有所帮助!

关于javascript - React/redux 具有相同容器的多个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759309/

相关文章:

javascript - IE11 在使用 AjaxFileUpload 上传文件时挂起

javascript - d3.js 4.2 选择中的第一个元素不绑定(bind)

css - MUI 进度指示器居中水平对齐

javascript - React js 性能工具插件抛出 "Cannot read property ' 未定义的计数”

javascript - ES6 中的生成器

javascript - javascript中 "click"事件的嵌套函数调用

javascript - 如何在换幻灯片时暂停 youtube 视频?

javascript - 为什么焦点处理程序使用错误的参数执行?

reactjs - 用大写字母 react 标签名称

javascript - 由于 ES2015 模板文字导致的 Webpack 错误 - "Unterminated string constant"