const PeoplePageWithErrorApi = WithErrorApi(PeoplePage)
<PeoplePageWithErrorApi foo="bar">
// props = {foo: bar}
// внутри PeoplePage props {
// foo: 'bar',
// setErrorApi: setErrorApi из WithErrorApi,
// setLoader: setLoader из WithErrorApi,
// isLoading: isLoading из WithErrorApi
//}
UserProfile
у вас не memo
, а значит обновляется всегда когда хоть что-то обновилось в родителе.UserProfile
рендерится.customizeProfile
.customizeProfile
диспатчит обновление profile
в redux
.profile
в redux
поменялось - вызывается обновление связанного с ним UserProfileContainer
.const r = require.context('./images/', false, /\.png$/);
const imagesMap = Object.fromEntries(r.keys().map((key) => [key, r(key)]));
console.log(imagesMap);
useEffect(() => {
const fetchData = async (url: string, data: any[] = []) => {
const res = await fetch(url);
const json = await res.json();
if(json.pagination.links.next){
await fetchData(json.pagination.links.next, data)
}
data.push(json.data);
return data;
};
fetchData("https://gorest.co.in/public/v1/users").then(setData);
}, [url]);
useEffect(() => {
const fetchData = async (url: string) => {
let data: any[] = [];
do {
const res = await fetch(url);
const json = await res.json();
data.push(json.data);
url = json.pagination.links.next;
} while (url);
return data;
};
fetchData("https://gorest.co.in/public/v1/users").then(setData);
}, [url]);
any
- расставить твои типы надо. <div className="App">
<Preloader>
<h1>
Hello CodeSandbox
</h1>
</Preloader>
<Preloader>
<h2>
Start editing to see some magic happen!
</h2>
</Preloader>
</div>
useLayoutEffect(() => {
const parent = ref.current.parentNode; // ref - корневой элемент
parent.classList.add(preloader.wrapper);
return () => {
parent.classList.remove(preloader.wrapper);
}
}, []);
const useMounted = (callback) => useEffect(callback, []);
Это не устранит корень проблемы, но в данном конкретном случае самое то.import { DocumentRenderer } from '@keystone-next/document-renderer';
const renderers = {
inline: {
bold: ({ children }) => {
return <strong>{children}</strong>;
},
},
block: {
paragraph: ({ children, textAlign }) => {
return <p style={{ textAlign }}>{children}</p>;
},
},
};
<DocumentRenderer document={document} renderers={renderers} />;
jsx
это вообще отношения не имеет.if else
, как-то используй результат(например return isOnSa...
), или отключи\заигнорь правило - никакой реальной проблемы тут нет, просто такие конструкции зачастую могут быть ошибкой(когда ты просто забыл использовать результат).