Files

2.8 KiB
Raw Permalink Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5a24c314108439a4d403614f Відправлення події дії 6 301442 dispatch-an-action-event

--description--

Метод dispatch це те, що ви використовуєте для відправлення дій до сховища Redux. Виклик store.dispatch() і передача значення, повернутого від виконавця дії, відправляє дію назад у сховище.

Згадайте що виконавці дій повертають об'єкт з властивістю типу, яка вказує дію, що відбулася. Тоді метод відправляє об'єкт дії до сховища Redux. На підставі прикладу з попереднього завдання, наступні рядки є еквівалентними, і обидва відправляють дію типу LOGIN:

store.dispatch(actionCreator());
store.dispatch({ type: 'LOGIN' });

--instructions--

Сховище Redux у редакторі коду має ініціалізований стан, де об'єкт містить властивість login, яка в даний момент встановлена на false. Існує також виконавець дії з назвою loginAction(), що повертає дію типу LOGIN. Відправте дію LOGIN до сховища Redux шляхом виклику методу dispatch, і передайте в дію створену loginAction().

--hints--

Виклик функції loginAction повинен повернути об'єкт з набором параметрів type до рядку LOGIN.

assert(loginAction().type === 'LOGIN');

Сховище має бути ініціалізованим з об'єктом, що має параметр login встановлений на false.

assert(store.getState().login === false);

Метод store.dispatch() використовується для відправлення дії типу LOGIN.

(getUserInput) =>
  assert(
    (function () {
      let noWhiteSpace = getUserInput('index').replace(/\s/g, '');
      return (
        noWhiteSpace.includes('store.dispatch(loginAction())') ||
        noWhiteSpace.includes("store.dispatch({type: 'LOGIN'})") === true
      );
    })()
  );

--seed--

--seed-contents--

const store = Redux.createStore(
  (state = {login: false}) => state
);

const loginAction = () => {
  return {
    type: 'LOGIN'
  }
};

// Dispatch the action here:

--solutions--

const store = Redux.createStore(
  (state = {login: false}) => state
);

const loginAction = () => {
  return {
    type: 'LOGIN'
  }
};

store.dispatch(loginAction());