Я создаю веб-клиент, используя create-реагировать-приложение, mobx-реагировать-lite и реагировать-маршрутизатор-дом.Как я могу подключить параметры запроса маршрутов к состоянию mobx?
Я использую хуки, поэтому я попытался использовать хук useEffect () с функцией mobx autorun () и обернул мои компоненты в хук useAsObservableSource () (так же, какздесь предлагается https://mobx -react.js.org / recipes-Effects ), и он работает нормально, пока я использую простые параметры, но если это массив, эффект идет в бесконечный цикл.
const Index = props => {
const store = useStore(); // my mobx global state store
const source = useAsObservableSource(props);
useEffect(() => autorun(() => {
// extracting url query params
const params = new URLSearchParams(source.location.search);
const tags = params.getAll('tags'); // an array ['4', '6', etc.]
const orderBy = params.get('orderBy') || 'date'; // a string
store.orderBy = orderBy; // works fine
store.tags = tags; // works only first time, when open in new browser window, if query string changes, causes infinite rerenders
store.fetchSomeData();
}),
[]);
return (
<Observer>{() => (
<div>
// render components based on store
</div>
)}</Observer>
);
};
Ожидается, что эффект будет запускаться только один раз при каждом изменении строки запроса, но он выполняется бесконечное количество раз при каждом изменении строки запроса.