我不太清楚是什么原因造成的,我有一个非常简单的反应应用程序,只有一个还原器(目前),当我试图发出一个行动,但它似乎不起作用?我想我创造减速机的方法有问题,但我不太确定。任何帮助都将不胜感激!
UPDATE看来我的调度和一切正常,但是每次我切换页面时,状态都会重新初始化为未定义的状态,而不是关闭当前的就地状态。
store.js
import { applyMiddleware, compose, createStore } from "redux";
import thunkMiddleware from "redux-thunk";
import { combineReducers } from "redux";
import monitorReducersEnhancer from "./enhancers/monitorReducers";
import loggerMiddleware from "./middleware/logger";
import homeReducer, {
initialSate as homeInitialState,
} from "./home/homeReducer";
const initialState = {
home: homeInitialState,
};
export const configureStore = () => {
const middlewares = [loggerMiddleware, thunkMiddleware];
const middlewareEnhancer = applyMiddleware(...middlewares);
const enhancers = [middlewareEnhancer, monitorReducersEnhancer];
const composedEnhancers = compose(...enhancers);
const rootReducer = combineReducers({
home: homeReducer,
});
const store = createStore(rootReducer, initialState, composedEnhancers);
return store;
};homeReducer.js
import { HOME_GET_RECIPE_ID } from "./homeActions";
export const initialSate = {
id: 0,
};
export default function homeReducer(state = initialSate, action) {
switch (action.type) {
case HOME_GET_RECIPE_ID: {
return {
...state,
id: action.id,
};
}
default:
//if there is no recognized action type
return {
...state,
id: -1,
};
}
}homeActions.js
export const HOME_GET_RECIPE_ID = "HOME_GET_RECIPE_ID"
export const updateSelectedRecipe = (id) => ({
type: HOME_GET_RECIPE_ID,
id
})homeRedirect.js
import React from "react";
import { useDispatch } from "react-redux";
import Link from "@material-ui/core/Link";
import { updateSelectedRecipe } from "../lib/home/homeActions";
export default function HomeRedirect (props) {
const dispatch = useDispatch();
const handleChange = () => {
dispatch(updateSelectedRecipe(props.id)); // will update the id
};
return (
<Link href={props.href} onClick={handleChange}>
{props.children}
</Link>
);
};发布于 2020-11-28 22:39:53
在此操作时,发现浏览器正在刷新并因此重置状态,这是由于使用了material中的标记。为了防止整个窗口刷新,在重定向时,我使用了function router之前的{ Link }函数,这允许在不重置状态的情况下进行重定向,因为它实际上并没有刷新浏览器。
https://stackoverflow.com/questions/65046217
复制相似问题