reactjs - React 没有导入 redux 动作,即使它被导出了
问题描述
我有这个动作:
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 is not an object (evaluating '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!!
解决方案
传给HOC mapDispatchToProps
。connect
export default connect(mapStateToProps, mapDispatchToProps)(UserMenuAccounts);
推荐阅读
- reactjs - 如何在服务器端渲染中使用 redux-saga?
- macos - 尽管通过了 -display gtk 选项,qemu 不显示 gui
- r - 处理 R 中数据集中的值(“<10”、“100-400”、“100+”)
- django - Django Heroku 部署:OSError:[Errno 2] 没有这样的文件或目录:'/app/{appname}/assets'
- php - IIS 和 Web.Management.PHP
- python - Anaconda 每次启动时都会崩溃
- c# - 如何注入 Func
带温莎集装箱 - javascript - 使用 jQuery FormData.append 将值附加到 $_POST 数组
- javascript - 匹配模块类型的对象
- javascript - 在 disable=true 后启用 Javascript 的输入字段