onChange={(e) =>
setTest(
produce((draft) => {
draft.conditions.forEach((c) =>
c.conditionProperties.forEach((prop) => {
if (prop.propertyName === item.propertyName) {
prop.propertyValue = e.target.value;
}
})
);
})
)
}
const LanguageSwitcher = () => {
const { locales, locale, asPath, reload } = useRouter();
return (
<div className="multilang">
{locales.map((lng) => {
if (lng === locale) return null;
return (
<>
<p className="switcherlanguage">{lng}</p>
<Link href={asPath} locale={lng} key={lng}>
<a>
<svg
width="28"
height="28"
viewBox="0 0 32 32"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M26 12L16 22L6 12"
stroke="black"
stroke-opacity="0.87"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</a>
</Link>
</>
);
})}
</div>
);
};
const lastBusinessWeekStart = subBusinessDays(new Date(), 7);
const lastBusinessMonthStart = subBusinessDays(new Date(), 30);
// фильтр неделя:
test.filter(({ date }) => isWithinInterval(
new Date(date),
{ start: lastBusinessWeekStart, end: new Date() }
));
//фильтр месяц:
test.filter(({ date }) => isWithinInterval(
new Date(date),
{ start: lastBusinessMonthStart, end: new Date() }
));
В Firestore у вас должны храниться посты, желательно, чтобы у постов было поле likes: [...userId]
, чтобы пользователь не мог лайкать пост бесконечно.
likes
есть id
пользователя, то блокируете кнопку лайка.like
action - если запрос на лайк резолвнулся успехом, обновляете state постов локально./auth
должен резолвиться редиректом. К примеру - когда пользователь уже авторизован. Далее вам нужно создать компонент обертку типа:const PublicRoute = ({component: Component, isLogin, ...rest}) => {
return (
<Route {...rest} render={props => (
isLogin ?
<Redirect to="нужный урл" />
: <Component {...props} />
)} />
);
};
<BrowserRouter>
<Switch>
<PublicRoute component={SignIn} isLogin={...} path="/auth" exact />
</Switch>
</BrowserRouter>
componentDidUpdate
в котором вы будете сравнивать:...
componentDidUpdate(prevProps) {
if (prevProps.match.params.userId !== this.props.match.params.userId) {
// шлете запрос с новым userId = nextProps.match.params.userId
}
}