Javascript 在Redux mapDispatchToProps和SweetAlert2中使用扩展运算符

Javascript 在Redux mapDispatchToProps和SweetAlert2中使用扩展运算符,javascript,reactjs,redux,sweetalert2,Javascript,Reactjs,Redux,Sweetalert2,当我将swal动作创建者包括在mapDispatchToProps中时 function mapDispatchToProps(dispatch) { return { getAnimal: (_id) => dispatch(getAnimal(_id)), ...swal } } this.props.getAnimal()在调用时可以正确地分派操作,但是由提供的this.props.sh

当我将
swal
动作创建者包括在
mapDispatchToProps
中时

    function mapDispatchToProps(dispatch) {
        return {
            getAnimal: (_id) => dispatch(getAnimal(_id)),
            ...swal
        }
    }
this.props.getAnimal()
在调用时可以正确地分派操作,但是
提供的
this.props.showart()
在调用时不会分派操作

但是,如果我们要替换
…swal
排列运算符,则会导致:

function mapDispatchToProps(dispatch) {
    return {
        getAnimal: (_id) => dispatch(getAnimal(_id)),
        showAlert: () => dispatch(swal.showAlert()),
        hideAlert: () => dispatch(swal.hideAlert()),
    }
}
我们现在弹出警报对话框(预期行为),但警报框中没有文本显示,JS控制台显示错误

SweetAlert2:未知参数“show”(SweetAlert2.js:122)

问题:
MapDispatchToprops
中使用
…swal
的正确方法是什么,这样您就不必单独选择要映射到的动作创建者了

更完整的代码

import React, { Component } from 'react';
import { connect } from 'react-redux';
import { withRouter } from 'react-router';
import { swal } from 'react-redux-sweetalert2';
import { getAnimal } from '../../actions';

class Animal extends Component {

    ...    

    function mapStateToProps(state) {
        ...
    }

    function mapDispatchToProps(dispatch) {
        return {
            getAnimal: (_id) => dispatch(getAnimal(_id)),
            ...swal
        }
    }

export default withRouter(connect(mapStateToProps, mapDispatchToProps)(Animal))

简单地说,你不能那样做。必须使用对象或函数分派操作。有关更多信息,请查看此

正确的方法是使用以下内容:

function mapDispatchToProps(dispatch) {
        return {
            getAnimal: (_id) => dispatch(getAnimal(_id)),
            swalAlert: (...swal) => dispatch(swalAlert(...swal)
        }
    }

要根据文档返回对象,请使用以下命令:

const getAnimal = (_id) => dispatch(getAnimal(_id))

export default withRouter(connect(mapStateToProps, { getAnimal, ...swal })(Animal))
像这样:

export default withRouter(connect(mapStateToProps, { ...myActions, ...swal })(Animal))

请务必考虑速记版的正反两方面:

谢谢!您的第二个方法
(mapStateToProps,{getAnimal,{swal})(Animal)
有效!但是在您的第一个方法中,我得到了
没有定义swalAlert
。我们如何才能让第一种方法发挥作用?swalAlert需要像定义getAnimal一样定义。这只是分派器方法。