我是react-redux
的新手。
现在我有一个像的对象,
const initialState = {
Low: [
{
id: 0,
technologyId: 0,
technology: '',
level: 'EASY'
}
],
Medium: [
{
id: 0,
technologyId: 0,
technology: '',
level: 'MEDIUM'
}
],
High: [
{
id: 0,
technologyId: 0,
technology: '',
level: 'TOUGH'
}
]
}
Now,
export default function QuizData(state = initialState, action) {
switch (action.type) {
case QUIZ_DATA:
return {
...state,
Low: action.data,
error: false,
}
case RESET_SETUP_QUIZ: {
console.log("intial state is ", ...state);
return {
...state
}
现在,这里发生的是经过一些操作,此对象随着每个键具有一些值而发生更改。喜欢,
所以,这变了。
{
Low: [
{
id: 0,
technologyId: 11,
technology: 'xsxs',
level: 'EASY'
}
],
Medium: [
{
id: 0,
technologyId: 22,
technology: 'swwsw',
level: 'MEDIUM'
}
],
High: [
{
id: 0,
technologyId: 110,
technology: 'xsxsx',
level: 'TOUGH'
}
]
}
现在,我要做的是,
那时候用户单击按钮时,我想将其更改为初始状态。
因此它将没有任何值,因为它应该与默认值相同。
所以,我尝试了什么
return {
initalState
}
但是后来我尝试使用object.assign
。
case QUIZ_DATA:
return Object.assign(
{},
state,
{
Low: action.data,
error: false
}
)
但仍然在这里,它仅复制第一级变量。
所以,我仍然无法做到这一点。
有人可以帮我吗?
答案 0 :(得分:1)
Object.assign将无法进行深层复制。
如果要进行深拷贝使用。
let newObj = JSON.parse(JSON.stringify(obj));
这里newObj将是深层副本。
答案 1 :(得分:1)
要重置为初始状态,您需要做的是:
case RESET_SETUP_QUIZ: {
return initialState;
就是这样。第一次调用reducer函数时,state
将是当前状态,而不是初始状态。
答案 2 :(得分:1)
请注意,对于action.type
的默认条件,您不返回任何内容。
返回default:
上的状态。 return { ...state, low: action.data, error: false }
应该可以立即使用。
export default function QuizData(state = initialState, action) {
switch (action.type) {
case QUIZ_DATA:
return {
...state,
Low: action.data,
error: false,
}
case RESET_SETUP_QUIZ: {
console.log("intial state is ", ...state);
return {
...state
}
}
default: {
return state;
}
}
}
答案 3 :(得分:1)
这是错误的:
allNum= as.numeric(sub("%", "", df))
您应该
case RESET_SETUP_QUIZ: {
console.log("intial state is ", ...state);
return {
initialState
}
或
case RESET_SETUP_QUIZ: {
console.log("intial state is ", initialState);
return initialState;