Почему this.props.location.pathname и this.props.history.location.pathname вдруг оказываются равны ?
componentDidUpdate(prevProps) {
if (
prevProps.location.pathname !== this.props.location.pathname &&
this.state.menuMobile
) {
this.setState({ menuMobile: false });
}
}
По идее ключи никакие не меняются и state меняется только когда скролл проходит отправную точку. Но React devtools выделяет красным мой хедер и componentDidUpdate отрабатывает при каждом скролле.
Действительно ли реакт ререндерит эти компоненты?
Как вообще лучше работать со скроллом? Делать через React или просто подключить отдельный JS файл и работать с DOM напрямую?
Знаю, что с React так работать с DOM не нужно
прописать логику чата в redux мешая с логикой сервиса
или лучше реализовать это отдельным проетом, а потом подключить
Тоже самое касается и бэк части на node
Там так же пихать всё в роуты сервиса или можно декомпазировать ?
И есть 3 класса которые унаследуются от этого класса
export const getPriceColor = obj => dispatch => {
const res = getPriceColorApi(obj);
dispatch({
type: obj.name,
payload: res,
});
};
Все работает и state меняется, но вот одна проблема, когда я меняю state вызывая функцию mosquitoNet то type экшена (например ADD_MOSQUITO ) приходит во все reducers и все остальные свойства state возвращаются в исходное состояние.
default:
return state;
Как можно избежать этого
const Example = ({ disabled, onChange }) => {
const [isActive, setIsActive] = useState(false);
const handleClick = useCallback((e) => {
e.stopPropagation();
if (disabled) return;
setIsActive(!isActive);
onChange(!isActive);
}, [isActive, disabled]);
return <Switch onClick={handleClick} />;
};
Если React добавил это предупреждение, должно быть решение для этого.