немного переделал код
const InnerBlock = ({blocks}) => {
return blocks.filter(...).map(...)
}
const getBlocks = (statuses) => {
if (statuses.length === 1) {
const sid = statuses[0].id;
return bigData.filter((a) => a.status === sid);
} else {
return bigData;
}
}
const InnerContainer = ({statuses, ...props}) => {
const [blocks, setBlocks] = useState(() => getBlocks(statuses));
useEffect(() => {
setBlocks(getBlocks(statuses));
}, [statuses]);
function sorting(){
if(...){
if(...){....setBlocks(sort)}else{setBlocks(sort)}
}else{
if(...){....setBlocks(sort)}else{setBlocks(sort)}
}
}
return(
{sorting} // где-то внутри пару раз вызывается
<InnerBlock blocks={blocks} />
)
}
ещё не совсем понятно, как у тебя там "вызывается" sorting. Если напрямую, то надо бы тоже что-то поменять.
useEffect нужен для случая, если statuses поменяется с обновлением компонента.
ну и вынос InnerBlock наружу, ибо создавать компонент внутри другого компонента - содомия покруче многих других.