Как получить результатыСостояние правильной реакции на поиск на стороне сервера и интеграция с избыточным хранилищем - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь получить resultsState с помощью API-интерфейса call-instantsearch findResultsState, но не могу интегрироваться с компонентом, уже связанным с избыточным хранилищем. Ошибка покажет как показано ниже.

Нарушение инварианта: Не удалось найти «хранилище» ни в контексте, ни в подпорках компонента. Либо оберните корневой компонент в <Provider>, либо явно передайте «store» в качестве реквизита компоненту

Позвони в api вот так

findResultsState(
  component: Search, {
  searchState
});

Мой компонент выглядит следующим образом. Он состоит из нескольких HOC, и некоторые HOC будут подключаться к хранилищу резервов через функцию react-redux connect.

Search = compose(
  intlWrapper,
  withModal,
  withGlobalAlert,
  withMainLayout,
  injectIntl,
)(Search);

Провайдер на стороне сервера будет рендериться так

const appString = renderToString(
  <Provider store={store}>
    <StaticRouter location={req.url} context={ context }>
      <Main />
    </StaticRouter>
  </Provider>
);

на стороне клиента:

const store = configureStore(history, 
window.__APP_INITIAL_REDUX_STATE__);

// Render component
hydrate(
  <Provider store={store}>
    <ConnectedRouter history={history}>
      <Main />
    </ConnectedRouter>
  </Provider>,
  document.getElementById('root'),
);

Главная

<Switch>
  { routes.map( route => <Route key={ route.path } { ...route } />)}
</Switch>

маршруты * * 1 025

export default [
  {
    path: '/search',
    component: Search,
  },{
   ...
  }
  ...
];
...