Я пытаюсь получить 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,
},{
...
}
...
];