Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 即使触发了reducer,Redux也不会更新状态_Reactjs_Redux - Fatal编程技术网

Reactjs 即使触发了reducer,Redux也不会更新状态

Reactjs 即使触发了reducer,Redux也不会更新状态,reactjs,redux,Reactjs,Redux,我正在尝试使用redux进行react 我有行动创造者: export const API_PATH_UPDATED = 'query/apiPathUpdated'; export const apiPathUpdated = (apiPath) => ({ type: API_PATH_UPDATED, payload: { apiPath, }, }); 在此函数中调用此操作创建者: const getUpcoming = useCallback( (

我正在尝试使用redux进行react

我有行动创造者:

export const API_PATH_UPDATED = 'query/apiPathUpdated';

export const apiPathUpdated = (apiPath) => ({
  type: API_PATH_UPDATED,
  payload: {
    apiPath,
  },
});
在此函数中调用此操作创建者:

const getUpcoming = useCallback(
    () => dispatch(apiPathUpdated('/movie/upcoming')),
    [dispatch],
  );
并应使用以下减速机更新我的状态:

const initialState = {
  basePath: 'https://api.themoviedb.org/3',
  apiPath: '/movie/popular',
  lang: 'en-US',
  adult: false,
  genresPath: '/genre/movie/list',
};

const queryReducer = (state = initialState, action) => {
  switch (action.type) {
    case API_PATH_UPDATED: {
      return {
        ...state,
        apiPath: action.payload.apiPath,
      };
    }
    default:
      return state;
  }
};

export default queryReducer;
实际上,当我在Redux devtools中单击触发GetUncoming函数的按钮时,我看到操作被右参数放大了:

但它不更新状态,我看到了旧的apiPath值:

以下是我的店铺的代码:

import {
  createStore, applyMiddleware, compose, combineReducers,
} from 'redux';
import camelMiddleware from 'redux-camel';
import thunk from 'redux-thunk';

import moviesReducer from './movies/index';
import queryReducer from './query/index';
import genresReducer from './genres/index';

const rootReducer = combineReducers({
  query: queryReducer,
  movies: moviesReducer,
  genres: genresReducer,
});

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
  trace: true, traceLimit: 25,
}) || compose;

const store = createStore(rootReducer, composeEnhancers(
  applyMiddleware(thunk, camelMiddleware()),
));

export default store;
谢谢大家的帮助。 我发现了我的问题。我忘了在queryReducer文件中的名为import的地方加上大括号

那么这条线呢

import API_PATH_UPDATED from './queryActions';
应该是

import { API_PATH_UPDATED } from './queryActions';

这就是在5a.m编码时发生的情况:/

我可能是错的,因为我是一个新手,但它不应该只是apiPath:action.payload而不是action.payload.apiPath吗?你没有在任何地方设置响应。你好像丢失了react saga的档案。您可以在何处发送请求和接收响应您可以显示您创建存储的位置和方式,并将此
queryReducer
合并到创建存储时传递给存储的reducer树中吗?如果您正在分派操作(并查看它的日志),那么请尝试验证您的reducer函数以及调用它的具体情况。