структура действия для получения состояния из редукса с использованием редукторов - PullRequest
0 голосов
/ 23 сентября 2019

Я использую избыточные действия, чтобы установить список контактов.Я хочу получить эти контакты, используя редукционное действие.но все, что я получаю, это контакт, установленный в действии.Можете ли вы сказать мне, как получить фактическое состояние контакта.

action.ts
export const setCurrentContact = (contact: IContactObject) => ({
  type: 'SET_CURRENT_CONTACT',
  contact,
})

export const getCurrentContact = () => ({
  type: 'GET_CURRENT_CONTACT',
  contact: { ID: "", Name: "", Email: "", Mobile: "", Landline: "", Website: "", Address: "" },//when using dispatch i get this contact i.e blank details
  }) 


reducer.ts

const initialContact=[{ ID: "507", Name: "xander", Email: "xander.cage@gmail.com", Mobile: "9999999999", Landline: "4026241799", Website: "www.xandercage.com", Address: "california" }]
export const currentContact = (state = initialContact, action) => {
  switch (action.type) {
    case 'SET_CURRENT_CONTACT':
      {

        return [
          {

              ID: action.contact.ID,
              Name: action.contact.Name,
              Email: action.contact.Email,
              Mobile: action.contact.Mobile,
              Landline: action.contact.Landline,
              Website: action.contact.Website,
              Address: action.contact.Address,


          }
        ]
      }
    case 'GET_CURRENT_CONTACT':
      {
        console.log(state[0]);
        return state

      }
    default:
      return state
  }
}


somefile.ts
interface IDispatchFromProps
{
    setCurrentContact: any,
    getCurrentContact: any,

}
function mapDispatchToProps(dispatch): IDispatchFromProps
{

    return{
            setCurrentContact: (contact:IContactObject)=>{dispatch(setCurrentContact(contact))},
        getCurrentContact: ()=>{dispatch(getCurrentContact())},//this should give me the initial data         
            }
}

ожидаемый вывод: getCurrentContact () выдает начальные данные, установленные в файле reducer.ts, фактический вывод: данные, установленные в контактном ключе action.ts

1 Ответ

0 голосов
/ 23 сентября 2019

Проблема в том, что при отправке 'SET_CURRENT_CONTACT' типа действия вы уничтожаете существующее состояние.

вместо:

return [
          {

              ID: action.contact.ID,
              ...rest of your payload
          }
  ]

делает это:

  return [
         ...state,
         {
           ID: action.contact.ID,
           ...rest of your payload
         }
   ]

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...