createProvider не экспортируется из реагирует на редукцию? - программирование

createProvider не экспортируется из реагирует на редукцию?

Я пытаюсь создать несколько разных хранилищ Redux, для этого я использую метод createProvider() в "response-redux".

Я установил последнюю версию response-redux (7.1.0), но получаю сообщение об ошибке типа "createProvider не экспортируется из response-redux". Когда я прошел через узлы модулей, я не смог найти createProvider внутри источника реакции-редукса. Это проблема версии или я что-то упустил в коде. Я поделился с вами следующим фрагментом кода:

Provider.js

import { createProvider } from "react-redux";

export const STORE_KEY = "myComponentStore";    
export const Provider = createProvider(STORE_KEY);

TestComponent.js

import React, { Component } from "react";
import { createStore } from "redux";
import Mycomponent from "./MyComponent";

import { Provider } from "./Provider";

const reducer = {};

const initialState = {
  title: "multiple store"
};

const store = createStore(reducer, initialState);

class TestComponent extends Component {
  render() {
    return (
      <Provider store={store}>
        <Mycomponent />
      </Provider>
    );
  }
}
export default TestComponent;

Mycomponent.js

import React, { Component } from "react";

import { connect } from "./Connect";

class MyComponent extends Component {
  render() {
    return <div>{this.props.title}</div>;
  }
}

export default connect(function mapStateToProps(state) {
  return {
    title: state.title
  };
})(MyComponent);
4b9b3361

Ответ 2

В документации сказано

Не создавайте более одного магазина в приложении! Вместо этого используйте зернокомбайн для создания единственного корневого редуктора из многих.

Таким образом, один провайдер, один магазин и несколько редукторов - это правильный (рекомендуемый) способ использования избыточности. Создайте одного глобального провайдера для своего приложения и определите редукторы для этого провайдера. Вы можете использовать селекторы данных для ваших компонентов.

Для этой информации, вероятно, команда разработчиков решила createProvider функциональности createProvider.

Ответ 3

  Я пытаюсь создать несколько разных магазинов Redux

Хорошо иметь несколько разных хранилищ Redux в одном приложении React. Только не используйте createProvider() для этого. Два подхода к созданию нескольких независимых хранилищ Redux:

SubApp5.js
----------
const store = createStore(reducer)

return {
  <>
    <Provider store={store}>
      <MyTable />
    </Provider>
  </>
}

При таком подходе несколько магазинов Redux будут сосуществовать.

  • Используйте несколько SPA внутри одного приложения React - см. crisp-реагировать. При таком подходе несколько хранилищ Redux не будут сосуществовать.
    Когда вы создаете crisp-реагировать, оно создает приложение React с 2 SPA, и вы можете добавить Redux к каждому SPA. Затем вы можете переключиться с одного SPA (и его хранилища Redux) на другой SPA и его хранилище.

Ответ 4

Ваш магазин может выглядеть примерно так:

// store.js

import { createStore } from 'redux';
import rootReducer from './root-reducer';

export default createStore(rootReducer);

И что "rootReducer" представляет собой комбинацию разных файлов редуктора:

//root-reducer.js

import SomeReducers from './reducers/some-reducers';
import AnotherOne from './reducers/another-one';

const rootReducer = combineReducers({
  SomeReducers,
  AnotherOne,
})

export default rootReducer;

Тогда ваш магазин используется в index

// index.js

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from "react-redux";
import store from "./storage/store";
import App from './App';

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>
  , document.getElementById('root')
);

Но это все еще только один store