Подключение действий для хранения вне компонента? - PullRequest
0 голосов
/ 24 октября 2018

Итак, давайте предположим, что у меня есть магазин с redux-thunk промежуточным программным обеспечением.Я создал магазин и экспортировал его так:

import myOwnCreateStoreMethod from './redux/createStore';
export const store = myOwnCreateStoreMethod();

Теперь я могу получить к нему доступ в любом месте моего приложения.Но что, если я хочу отправить действие из любого места?Я объявил их, например, в myAction.js:

export const myAction = () => (dispatch, getState) =>
    dispatch({ type: 'SOME_TYPE', payload: ... })

Теперь я могу импортировать их и подключиться к своему магазину / компоненту следующим образом:

import * as actions from './myActions.js';

const MyComponent = () => <div>Hello World</div>;
const mapStateToProps = () => ({});
export default connect(mapStateToProps, actions)(MyComponent);

Мой вопрос - что если яУ вас нет компонента, и вы все еще хотите отправлять действия, объявленные, как указано выше?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Ах, так просто после того, как @Asaf Aviv написал свой простой ответ.Поэтому я реализовал это так:

import * as yourActions from './redux/actions/yourActions';
import { store } from './path/to/your/store';

const connectActions = (store, actions) => {
  const { dispatch } = store;
  return Object.keys(actions).reduce((acc, key) => {
    const action = props => dispatch(actions[key](props));
    acc[key] = action;
    return acc;
  }, {});
};

const connectedActions = connectActions(store, yourActions);
0 голосов
/ 24 октября 2018

Вы можете отправлять действия из store напрямую

import store from './myStore';
import { myAction } from './myAction';    

store.dispatch(myAction());

Redux - это отдельная библиотека.

Это не имеет ничего общего с React, они просто хорошо работают вместе на основе единого источника правды React и одного глобального хранилища Redux в качестве состояния нашего приложения.

Вы можете использовать избыточность в каждомПриложение JavaScript.

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