У меня есть файл действий
import keyMirror from 'keymirror';
export const actionTypes = keyMirror({
OPEN_LIGHTBOX: null,
CLOSED_LIGHTBOX: null
});
export const openLightbox = (closable = false) => ({
type: 'OPEN_LIGHTBOX',
payload: {lightboxOpen: true, lightboxClosable: closable}
});
и редуктор, я не собираюсь помещать код здесь, потому что он не кажется необходимым. В любом случае это работает.
У меня есть реактивный компонент, который говорит
module.exports = connect((state) => {
console.log('state change'); // eslint-disable-line no-console
console.log(state); // eslint-disable-line no-console
return {
findShopDomainData: state.findShopDomain
}
})(Autocomplete);
Я могу зарегистрировать изменения состояния внутри реагирующего компонента, я получаю операторские сообщения в консоли.
Но у меня также есть вещи вне реакции, которые должны вызывать эти избыточные действия. Поэтому я импортирую в файл JS.
import { createStore } from 'redux';
import { findShopDomain } from 'path to reducer file happens here'
import { openLightbox } from 'path to action file'
тогда я
let reduxStore = createStore(findShopDomain);
reduxStore.dispatch(openLightbox(true));
Если я выполняю это действие в моем vanilla js-файле, я попадаю в редуктор, но изменение состояния никогда не регистрируется в моем подключенном компоненте React. Я предполагаю, что это потому, что функция соединения, вероятно, превращает его в новый редуктор, и, по сути, у меня фактически есть два редуктора, которые не будут влиять друг на друга.
Во всяком случае, мне бы очень хотелось, чтобы каким-то образом был reduxStore.dispatch (openLightbox (true)); в моей ванили JS будет зарегистрирован моим компонентом реакции.