// './file_1'
import { createSlice } from '@reduxjs/toolkit';
export const array = createSlice({
name: 'array',
initialState: {
value: []
},
reducers:{
append(state, a) {
state.value.push(a)
}
}
});
export const { append } = array.actions;
export default array.reducer;
我也更新了商店,所以那边没问题
'/.file_2'
import { useSelector, useDispatch } from 'react-redux';
import { append } from './file_1';
const dispatch = useDispatch()
let x = 5
dispatch(append(x));
会引发此错误:对象作为React子对象无效(找到:如果您想要呈现子对象的集合,请改用数组。
2条答案
按热度按时间vq8itlhq1#
“a”是一个对象。对象看起来像这样-〉{action:...,有效负载:...}因此您需要像这样访问它-〉a.payload
enyaitl32#
问题
问题是代码尝试呈现的对象不是有效的JSX。
因为你没有关于数组的错误,我假设你正确地Map了它,如下所示:
错误是
error: Objects are not valid as a React child (found: object with keys {type, payload})
,这是非常明显的,操作对象被调度到Redux存储并保存到状态。溶液
我确信您的意思是只保存 * payload值,而不是 * 整个 * action对象,因为调度值
x
是一个基元数字类型。更新reducer函数,以解包有效负载并保存到状态中。