React 报错 Objects are not valid as a React child (found: object with keys {})

React目中使用Redux声明多个Reducer,并且使用Reduxconnect组件链接 ReducerAction。由于项目中声明多个Reducer需要合并来优化代码,固采用ReduxcombineReducers组件完成该需求,代码完成后报错,具体信息如下:

报错原文
Objects are not valid as a React child (found: object with keys {counter, auth}). If you meant to render a collection of children, use an array instead.

原文翻译
对象作为React子对象无效(找到:具有键{counter,auth}的对象)。如果您要渲染子集合,请使用数组。

  1. 依据报错信息定位到代码具体位置如下:
// Reducer.js
import { combineReducers } from 'redux';
import { counter } from  './index.redux';
import { auth } from  './auth.redux';
export default combineReducers({ counter, auth }) // 合并多个 Reducer

// App.js
@connect (
  state => ({num: state }),  
  { addGun, removeGun, addGunAsync }, 
)
  1. 尝试修改App.js 代码如下,无报错信息,但action 无法生效:
// App.js
@connect (
  state => ({num: 10}),  // 修改为数字 10
  { addGun, removeGun, addGunAsync }, 
)
  1. 然后输出state如下,实际上state返回的是所有state的对象形式的集合:
# 浏览器控制台输出内容
{
	auth: {isAuth: false, user: "李云龙"}
	counter: 10
}
  1. App.js中只使用了counter数据状态,然后改成如下代码问题解决:
// App.js
@connect (
  state => ({num: state.counter }), // 只需要取 state.counter 的值
  { addGun, removeGun, addGunAsync }, 
)
小结

针对这类无法直观判断报错问题原因的情况,只能先定位到报错信息显示的具体某个位置,然后修改相关联的代码来排除。在有疑惑的位置输出对应的状态或者数据进行判断,最终排除报错的问题。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值