数据在redux-reducer中被覆盖

问题描述 投票:1回答:1

我正在尝试实现逐页的入职注册屏幕,该页面的第一页收集了用户的体征,在下一页中,它要求输入名称。问题是sign_id被替换为名称。请检查下面的代码

action.js

import * as types from './types';

export function addNewUserRequest(values) {
  console.log('action data', values);
  return {
    type: types.NEW_USER_REQ,
    values,
  };
}

reducer.js

import createReducer from '../lib/createReducer';
import * as types from '../actions/types';

const initialState = {
  values: [],
};

export const newUserReducer = createReducer(initialState, {
  [types.NEW_USER_REQ](state, action) {
    console.table('reducer action test', state, action.values);
    return {
      ...state,
      values: action.values,
    };
  },

createreducer.js

export default function createReducer(initialState, handlers) {
  return function reducer(state = initialState, action) {
    if (handlers.hasOwnProperty(action.type)) {
      return handlers[action.type](state, action);
    } else {
      return state;
    }
  };
}

Page1.js

 const dispatch = useDispatch();
  const onPress = (val) => {
    console.log('SELECTED SIGN', val);
    let value = {
      sign_id: val,
    };
 NavigationService.navigate('Login3');
    dispatch(newUserActions.addNewUserRequest(value));

  };

Page2.js

const dispatch = useDispatch();

  const handlePress = () => {
    let value = {
      name: userName,
    };
    dispatch(newUserActions.addNewUserRequest(value));
    NavigationService.navigate('Login4');
  };

控制台enter image description here

javascript reactjs react-redux
1个回答
0
投票

仅将单个值传递时,将addNewUserRequest中的参数从values更改为value。然后将action.value附加到state.values

export function addNewUserRequest(value) {
  console.log('action data', value);
  return {
    type: types.NEW_USER_REQ,
    value,
  };
}

export const newUserReducer = createReducer(initialState, {
  [types.NEW_USER_REQ](state, action) {
    console.table('reducer action test', state, action.value);
    return {
      ...state,
      values: { ...state.values, ...action.value }
    };
  },
© www.soinside.com 2019 - 2024. All rights reserved.