首页 > 解决方案 > 即使使用正确的数据调用 reducer,Redux 状态也不会更新

问题描述

出于某种原因,即使 reducer 运行并且 console.log 显示正确的数据被传递给它,redux 存储也没有更新。

相关文件:

  1. 应用程序.jsx
import {Provider} from 'react-redux';
import store from './store';
const Stack = createStackNavigator();

export default class App extends Component {
  render() {
    return (
      <Provider store={store()}>
  1. Store.js
import {createStore, applyMiddleware} from 'redux';
import rootReducer from '../reducers';
import thunk from 'redux-thunk';

const store = (initialState = {}) =>{
  return createStore(
    rootReducer,
    initialState,
    applyMiddleware(thunk)
  )
}
export default store;
  1. 注册.tsx
...
<Pressable 
style={styles.button}
onPress={() => this.props.submitRegistration(this.state)}
>
...
const mapDispatchToProps = (dispatch: any) => {
  return {
    submitRegistration: (data: any) => {
      dispatch(UserActions.submitRegister(data))
    }
  }
}

export default connect(mapStateToProps, mapDispatchToProps)(Register);
  1. 用户操作
import { signUp } from '../../services/backend';
import { setUser } from '../../actions';

export function submitRegister(data: any) {
  return async (dispatch: any) => {
    const response = await signUp(data);

    const responseData = await response.json();
    if(responseData.token) {
      console.log('here', responseData);
      dispatch(setUser(responseData.user));
    }
  }; 
}
  1. 动作创建者
export const setUser = (user: any) => ({
  type: 'SET_USER',
  user
}); 
  1. 用户减速器
import { SET_USER } from "../actions/actionTypes"

const initialState = {
  user: {}
}

const User = (state = initialState, action: any) => {
  switch(action.type) {
    case SET_USER: 
      console.log('here action', action.user);
      return { user: action.user}
    default:
      return state
  }
}
export default User;

我真的很感激任何可能的帮助。似乎我在某种程度上配置错误,因为即使我设置了初始状态:

const initialState = {
  user: {firstName: "John"}
}

它没有反映在 redux 商店中。

标签: javascriptreactjsreduxreact-redux

解决方案


在您的动作创建者中:

export const setUser = (user: any) => (return { type: 'SET_USER', user });


推荐阅读