BA
Size: a a a
BA
GB
BA
{
items: FileDataItem[],
selection: number[],
}
lection,
который дергает onSelect с
в-во переданное сверху, в котором отдаются айтемы:nst onSelectProp = props.onSelect;Сейчас props.onSelect вызывается больше раз чем нужно, потому что зависимость в этом эффекте на самом деле не [selection, items], а [selection, <items на которые указывает selection>]
useEffect(() => {
onSelectProp(state.selection.map(i => state.items[i]));
}, [onSelectProp, state.selection, state.items]);
{useState?
items: FileDataItem[],
selection: number[],
}
в
GB
GB
{useState?
items: FileDataItem[],
selection: number[],
}
в
BA
GB
BA
const onSelectProp = props.onSelect;
const selected = useMemo(() => state.selection.map(i => state.items[i]), [
state.selection,
state.items,
]);
useEffect(() => {
onSelectProp(selected);
}, [onSelectProp,
...selected]);
BA
GB
AN
useEffect
делаешь а не в хендлере который дергается на выбор item'а?lL
GB
useEffect
делаешь а не в хендлере который дергается на выбор item'а?GB
type Props = {
onSelect: (files: FileDataItem[]) => void;
limit?: number;
};
CameraRollPicker: React.FC<Props>
AN
const handleOnSelect = React.useMemo(() => (item: FilterItemPrototype) => () => {
const alreadyInSelected = Boolean(R.contains(item.id, selectedPoints))
const appender: any = alreadyInSelected ? R.without : R.append
const expectedSelectedPoints = appender(item.id, selectedPoints)
setSelectedPoints(expectedSelectedPoints)
}, [
selectedPoints,
setSelectedPoints,
])
VK
VK
const onSelectProp = props.onSelect;
const selected = useMemo(() => state.selection.map(i => state.items[i]), [
state.selection,
state.items,
]);
useEffect(() => {
onSelectProp(selected);
}, [onSelectProp,
...selected]);
GB
VK
GB