我使用redux + react来构建我的网站,我想使用redux来控制侧边栏可见.侧边栏是由semantic-ui-react定义的.因为我想控制它跨越另一个组件,所以我在侧边栏中定义了道具父组件const { visible, dispatch } = this.props
,有一个onClick函数来处理这个.我会展示我的代码.
未捕获的错误:操作必须是普通对象.使用自定义中间件进行异步操作.
这个错误让我困惑了一个下午,我不知道为什么!这是我的行动代码:
**action** export const SIDEBARISVISIBLE = 'sidebarVisible' export function sidebarVisibleAction() { return { type: SIDEBARISVISIBLE } }
如您所见,我定义了一个动作创建者返回了一个普通对象.
这是我的reducer代码:
**reducer** import SIDEBARISVISIBLE from '../actions/outside.js' function sidebarVisible(state = { sidebarIsVisible: false }, action) { switch (action.type) { case SIDEBARISVISIBLE: return Object.assign({}, state, { sidebarIsVisible: !state.sidebarIsVisible }) default: return state } } export default sidebarVisible
我的商店代码:
**store** import { createStore, applyMiddleware, compose } from 'redux' import thunk from 'redux-thunk' import sidebarVisible from '../reducers/outside.js' export default initialState => { return createStore( sidebarVisible, initialState, applyMiddleware(thunk) ) }
然后,我的组件代码(部分):
class OutsideView extends Component { constructor(props) { super(props) this.state = { activeItem: '' } } handleItemClick = (e, { name }) => this.setState({ activeItem: name }) render() { const { activeItem } = this.state const { visible, dispatch } = this.props return (...... { this.setState({ activeItem: name }) dispatch(sidebarVisibleAction) } }> OutsideView.PropTypes = { visible: PropTypes.bool.isRequired, dispatch: PropTypes.func.isRequired } function mapStateToProps(state) { return { visible: state.sidebarIsVisible, } } export default connect( mapStateToProps )(OutsideView)最后,我的路由器:
import configureStore from './store/index.js' const store = configureStore() export default class Root extends Component { render() { return () } } 所以,我搜索这个错误的答案,大多数人都说,你必须设置redux-thunk并使用ApplyMiddleware来使用它,这是最简单的方法.但我定义的动作是普通对象.如果我不使用redux- thunk,我想我也不会遇到这个错误.所以,我很困惑,怎么解决这个问题?
谢谢你的帮助
1> 小智..:这里:
dispatch(sidebarVisibleAction)
你逝去的功能
sidebarVisibleAction
来dispach
.您应该调用它并传递结果,因此代码将如下所示:
dispatch(sidebarVisibleAction())
(现在
dispatch
将获得对象,而不是函数).推荐阅读
如何解决《Python3.5类型提示动态生成的实例属性》经验,为你挑选了0个好方法。 ... [详细] 如何解决《隐藏Python脚本中的登录凭据》经验,为你挑选了2个好方法。 ... [详细] 如何解决《使用rpackagexlsx删除Excel中的工作表》经验,为你挑选了1个好方法。 ... [详细] 如何解决《用ggplot2中的geom_smooth绘制虚线回归线》经验,为你挑选了1个好方法。 ... [详细] 如何解决《有没有办法在symfony2中向多个路径添加违规?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《如何将IEnumerable<?>转换为IEnumerable<string>?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《查找具有格式不佳的结束标记的特定HTML标记》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何修复“找不到GLEW(丢失:GLEW_INCLUDE_DIRGLEW_LIBRARY)”》经验,为你挑选了1个好方法。 ... [详细] 如何解决《VideoView不在RecyclerView中播放视频或音频》经验,为你挑选了0个好方法。 ... [详细] 如何解决《使用C++strtk导致xutility错误C4996》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何跳过if语句转到下一个if语句》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Gradle依赖树,(*)是什么意思?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《将时间戳与描述分组》经验,为你挑选了1个好方法。 ... [详细] 如何解决《为什么不应该将PostGIS安装在PostgreSQL数据库“postgres”中?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《将Excel行读取为数组:PHPExcel是否具有fgetcsv()等效项?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在python中对一个2dnumpy数组进行下采样》经验,为你挑选了1个好方法。 ... [详细] 如何解决《传递一个数组》经验,为你挑选了2个好方法。 ... [详细] 如何解决《D3.js时间刻度刻度线-仅年份和月份-自定义时间格式》经验,为你挑选了0个好方法。 ... [详细] 如何解决《如何在rxjs中使用节点的变换流?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《VisualStudio2015CommunityEdition是否具有MVC模板?》经验,为你挑选了1个好方法。 ... [详细]吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1SQL循环,如果BREAK
- 2Enum对象的C#extend方法
- 3如何从FasterXML\Jackson序列化/反序列化布尔值作为Int?
- 4如何让JToolBar覆盖整个窗口高度?
- 5如何处理Redshift中的尺寸类型2缓慢变化?
- 6是否可以使用扩展超类的方法参数的参数覆盖超类的方法?
- 7如何在C中解析链式宏?
- 8TweenMax将无法正确初始化:"Uncaught无法补间空目标."
- 9`cv.glmnet`适用于RStudio但不适用于RScript
- 10将系统属性传递给spring boot
- 11d3.js geo worldmap - 合并俄罗斯(从美国右边的左边小部分向左移位)
- 12如何在.cshtml中使用@:
- 13Modelica质量/能量/动量平衡
- 14NPM + Zurb Foundation + WebPack:无法解析模块'基础'
- 15使用推土机可以将多个字段映射到一个字段吗?
- 16(Android)尝试抛出OutOfMemoryError时抛出OutOfMemoryError
- 17使用ng-repeat或ng-model填充textarea,以便它不会使用迭代数据创建一个新的textarea
- 18Fullcalendar:如何删除事件
- 19覆盖动画填充模式:在JavaScript/CSS中转发
- 20如何获取byte []以在视图上显示为div的背景图像(C#,ASP.NET,MVC)
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有