Reactjs React即使导出了redux操作,也不会导入它
我有以下行动:Reactjs React即使导出了redux操作,也不会导入它,reactjs,Reactjs,我有以下行动: export const setActive = (index,payload) => ({ type:actionTypes.SET_ACTIVE, payload, id }) 这是减速器: case actionTypes.SET_ACTIVE: return { ...state, accounts:[...state.accounts,{active:action.payload,i
export const setActive = (index,payload) => ({
type:actionTypes.SET_ACTIVE,
payload,
id
})
这是减速器:
case actionTypes.SET_ACTIVE:
return {
...state,
accounts:[...state.accounts,{active:action.payload,id:action.id}]
}
以下是我在组件中导入它的方式:
import { connect } from "react-redux";
import { bindActionCreators } from 'redux';
import { setActive } from '../../redux/user/actions'
const mapDispatchToProps = dispatch => ({
actions: bindActionCreators(
{
setActive
},
dispatch,
),
});
const mapStateToProps = createStructuredSelector({
GetAccounts: getAccounts,
});
export default connect(mapStateToProps, null)(UserMenuAccounts);
这是我在函数中使用它的方式:
setActiveFunc = (item) => {
const {actions} = this.props
console.log("Info",item.active,item.id)
actions.setActive(!item.active,item.id)
};
但是当这个函数被执行时,我得到这个错误TypeError:undefined不是一个对象(评估'actions.setActive')
有没有关于发生这种情况的原因以及如何修复的建议?您实际上没有将
mapDispatchToProps
传递给connect
HOC
const mapDispatchToProps = dispatch => ({
actions: bindActionCreators(
{
setActive
},
dispatch,
),
});
const mapStateToProps = createStructuredSelector({
GetAccounts: getAccounts,
});
export default connect(mapStateToProps, null)(UserMenuAccounts); // passed null!!
export default connect(mapStateToProps, mapDispatchToProps)(UserMenuAccounts);
解决方案
将mapDispatchToProps
传递到connect
HOC
const mapDispatchToProps = dispatch => ({
actions: bindActionCreators(
{
setActive
},
dispatch,
),
});
const mapStateToProps = createStructuredSelector({
GetAccounts: getAccounts,
});
export default connect(mapStateToProps, null)(UserMenuAccounts); // passed null!!
export default connect(mapStateToProps, mapDispatchToProps)(UserMenuAccounts);