У меня есть следующий редуктор:
export const changeListener = () => (dispatch) => {
changeListenerManager.update((res) => {
changeListener();
dispatch({ type: 'CHANGE', payload: res });
});
};
Которая должна вызывать функцию changeListener();
сразу после того, как она была вызвана. Однако, когда ответ возвращается от собственного моста (мост получает функцию обратного вызова, сохраняет ее, а когда происходит изменение, он использует ее для уведомления приложения), функция вообще не вызывается - и ошибки нет. Если я пытаюсь вызвать метод из обратного вызова (в отладчике), я получаю информацию, что он не определен. Как я могу решить эту проблему?
2 ответа
changeListener
- это каррированная функция, поэтому вам нужно передать второй необходимый аргумент, dispatch
.
Примере:
changeListener()(dispatch);
Примечание : текущая логика кажется бесконечной.
Когда вы вызываете changeListener
в "теле" вашей функции, вам нужно вызвать ее дважды. Один раз без отправки, один раз с:
export const changeListener = () => (dispatch) => {
changeListenerManager.update((res) => {
changeListener()(dispatch); // <--- CHANGE
dispatch({ type: 'CHANGE', payload: res });
});
};
Вы используете функции более высокого порядка.
Похожие вопросы
Новые вопросы
reactjs
React - это библиотека JavaScript для создания пользовательских интерфейсов. Он использует декларативную компонентную парадигму и стремится быть одновременно эффективным и гибким.