У меня следующий вопрос ...
Можно ли было бы разделить часть состояния, которая находится в контексте, потребляемую конкретным дочерним элементом, без его рендеринга каждый раз, когда изменяется полное состояние, а неэта часть?(Не пропуская его через реквизиты)
И это пример кода (с использованием реквизита), но вместо этого я хочу использовать «useContext части состояния» без рендеринга каждый раз, когда изменяется глобальный контекст:
container.tsx
export const App: React.FunctionComponent<AppContextProps> = props => {
const [appState, appDispatch] = React.useReducer(reducer, initialAppState);
return (
<>
<ThemeProvider theme={theme}>
<>
<GlobalStyle />
<AppDispatch.Provider value={appDispatch}>
<FixedBottomContainer
bookForm={<BookForm />}
listContainer={
<ListContainer
books={appState.books}
discount={appState.discount}
/>
}
discountContainer={
<DiscountContainer discount={appState.discount} />
}
/>
</AppDispatch.Provider>
</>
</ThemeProvider>
</>
);
};
DiscountContainer.tsx
export const DiscountContainer: React.FunctionComponent<
DiscountContainerProps
> = ({ discount }) => {
const appDispatch = React.useContext(AppDispatch);
const handleDiscount = (event: React.ChangeEvent<HTMLInputElement>) =>
appDispatch({ type: "addDiscount", payload: event.target.value });
return (
<>
<StyledDiscountField value={discount} onChange={handleDiscount} />
</>
);
};
Заранее спасибо!
Best