Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lesson6 #84

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Lesson6 #84

wants to merge 4 commits into from

Conversation

Mm5623
Copy link

@Mm5623 Mm5623 commented Nov 1, 2021

No description provided.

import produce from 'immer';
import { CHANGE_RESTAURANT_TAB } from '../constants';

export default produce((draft = { restaurantActiveTab: 'menu' }, action) => {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

у нас эта вкладка есть в роутинге, не совсем понимаю зачем ее сохранять в редакс

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хотелось сохранить логику, чтобы при переключении ресторана не менялась выбраная подвкладка и при этом не хотелось показывать эту подвкладку родительским компонентам.
Как при переключении по Navlink получить предыдущую вкладку не придумалось, пришлось сохранять в редакс.

@@ -22,7 +22,8 @@ export default (state = initialState, action) =>
draft.loading[restId] = false;
draft.loaded[restId] = true;
draft.error = null;
Object.assign(draft.entities, arrToMap(data));
const dataWithRestId = data.map((obj) => ({ ...obj, restId }));
Object.assign(draft.entities, arrToMap(dataWithRestId));
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Из данных, которые у нас лежат в редьюсере ресторанов мы можем однозначно сказать какой продукт из какого ресторана. Теперь эта информация у нас есть в двух местах, тут и в ресторанах. Так делать не стоит.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот про это очень интересно, мне казалось, что обратные ссылки это нормально :))

};
};

export const getActiveRestaurantTab = () => (_dispatch, getState) => {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это не экшен, а селетор.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут собственно так сделано, чтобы получить значение однократно при перерендере компоненты с новым рестораном, а не при каждой смене таба. Не очень понимаю, как можно для этого использовать селектор, можно подробнее?

path="/restaurants/:restId/reviews"
component={() => <Reviews reviews={reviews} restId={id} />}
/>
<Redirect to={`/restaurants/:restId/${getActiveRestaurantTab()}`} />;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

тут нужно просто редиректить на меню

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот собственно ради этого все и затевалось :)
если по умолчанию редиректить на меню, у нас относительно текущей версии приложения потеряется сохранение выбранной подвкладки ресторана. А менять эту логику не хотелось.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants