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]);
{
  items: FileDataItem[],
  selection: number[],
}
в useState?GB
GB
{
  items: FileDataItem[],
  selection: number[],
}
в useState?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