componentDidMount() {
this.setState({
x: 1
y: 2
z: 1-2
})
}
When should I learn Redux?https://redux.js.org/faq/general#when-should-i-lea...
What to learn can be an overwhelming question for a JavaScript developer. It helps to narrow the range of options by learning one thing at a time and focusing on problems you find in your work. Redux is a pattern for managing application state. If you do not have problems with state management, you might find the benefits of Redux harder to understand. Some UI libraries (like React) have their own state management system. If you are using one of these libraries, especially if you are just learning to use them, we encourage you to learn the capabilities of that built-in system first. It might be all you need to build your application. If your application becomes so complex that you are confused about where state is stored or how state changes, then it is a good time to learn Redux. Experiencing the complexity that Redux seeks to abstract is the best preparation for effectively applying that abstraction to your work.
case "SET_PROJECT_DATA": { return state = { ...state, [action.payload.name]: action.payload.value }; }
А здесь вы и вовсе мутируете объект состояния, ничего при этом не возвращая. Вы здесь должны вернуть абсолютно новый объект, никак не изменяя старый.case "SET_PROJECT_DATA_ARRAY": { action.payload.forEach(function (item) { if (typeof item === "object") { const keys = Object.keys(item); keys.forEach((key) => state = { ...state, [key]: item[key] }); } }); }
cols: prevState.cols,
this.setState((prevState) => {
return {
cols: prevState.map((col, index) => {
if (index !== id) {
return col;
}
return {
...col,
cards: [
...col.cards,
{/*new card fields*/}
]
}
}
}
})
редакс всё время обходит полностью все редьюсеры?
Но это также есть и в PHP фреймворках описанных выше.Есть, но это работает на сервере, а Реакт на клиенте. Это принципиально разные сценарии использования сайта.
Не могу понять почему ошибку выдает.Потому что вызываете setState в конструкторе, по сути.
нужно запустить через componentDidMount но это тоже не сработалоА должно было. Но поскольку код вы не показали, в чём там был подвох нам неизвестно. Скорее всего, вы просто добавили вызов в componentDidMount, но не убрали его из конструктора.
import { useEffect } from "react";
import { useLocation } from "react-router-dom";
export default function ScrollToTop() {
const { pathname } = useLocation();
useEffect(() => {
window.scrollTo(0, 0);
}, [pathname]);
return null;
}