Javascript 操作负载被使用了两次(Redux)
我正在创建一个服务器端呈现的React应用程序,它使用Redux并从Wordpress安装中获取内容(通过WP API)。请考虑以下减速器:Javascript 操作负载被使用了两次(Redux),javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在创建一个服务器端呈现的React应用程序,它使用Redux并从Wordpress安装中获取内容(通过WP API)。请考虑以下减速器: const initState = { mainMenu: null, userMenu: null } export default ( state = initState, action ) => { switch( action.type ) { case 'FETCH_MAIN_MENU':
const initState = {
mainMenu: null,
userMenu: null
}
export default ( state = initState, action ) => {
switch( action.type ) {
case 'FETCH_MAIN_MENU':
state = {
...state,
mainMenu: action.payload.data
}
case 'FETCH_USER_MENU':
state = {
...state,
userMenu: action.payload.data
}
default:
return state;
}
}
在第一次呈现应用程序之前,这两个操作都在服务器端调度,并且这两个操作都是返回两个不同菜单的承诺。问题是,FETCH\u USER\u MENU
的负载有时实际上与FETCH\u MAIN\u MENU
的负载相同。当FETCH\u USER\u MENU
发出的承诺解析得太慢,从而action.payload.data
获取在FETCH\u MAIN\u MENU
案例中分配给它的值时,可能会发生这种情况。我非常确定这是怎么回事,因为如果我任意将action.payload.data
设置为null,用户菜单(同样,只是有时)根本不会呈现:
const initState = {
mainMenu: null,
userMenu: null
}
export default ( state = initState, action ) => {
switch( action.type ) {
case 'FETCH_MAIN_MENU':
state = {
...state,
mainMenu: action.payload.data
}
action.payload.data = null;
case 'FETCH_USER_MENU':
state = {
...state,
userMenu: action.payload.data // Sometimes results as null
}
default:
return state;
}
}
除了为每个菜单创建一个不同的减速机之外,您能推荐一个解决方案吗 该问题是由
切换案例故障造成的,因为没有从案例语句返回,也没有使用break。理想情况下,使用redux时,您需要返回更新的状态。你会写信的
export default ( state = initState, action ) => {
switch( action.type ) {
case 'FETCH_MAIN_MENU':
return {
...state,
mainMenu: action.payload.data
}
case 'FETCH_USER_MENU':
return {
...state,
userMenu: action.payload.data
}
default:
return state;
}
}
该问题是由切换case fallthrough
引起的,因为既没有从case语句返回,也没有使用break。理想情况下,使用redux时,您需要返回更新的状态。你会写信的
export default ( state = initState, action ) => {
switch( action.type ) {
case 'FETCH_MAIN_MENU':
return {
...state,
mainMenu: action.payload.data
}
case 'FETCH_USER_MENU':
return {
...state,
userMenu: action.payload.data
}
default:
return state;
}
}
令人惊叹的!谢谢。很高兴能帮助我们!谢谢。很高兴能帮上忙