#javascript #reactjs #redux #react-table
#язык JavaScript #реагирует на #возвращение #реагировать-таблица
Вопрос:
Я беру выбранный идентификатор из других компонентов. По этому идентификатору я хочу взять массив с объектом, выбранным параметром useSelector. После того, как я передам его в useMemo (), он приведет к бесконечному циклу. Как передать его внутри useMemo, чтобы предотвратить бесконечный цикл
export const Table = ({ selectedId }) =gt; { console.log(selectedId); let selected = useSelector((state) =gt; state.items.item).filter( (e) =gt; e._id === selectedId ); console.log(selected); const data = useMemo(() =gt; [...selected], [selected]); const columns = useMemo( () =gt; [ { Header: "Name", accessor: "name", }, { Header: "Age", accessor: "age", }, ], [] );
Комментарии:
1. Похоже, проблема в том, что здесь
let selected = useSelector((state) =gt; state.items.item).filter((e) =gt; e._id === selectedId);
он создает новый массив при каждом рендеринге. Поместитеfilter
внутри селектора, вот такlet selected = useSelector((state) =gt; state.items.item.filter((e) =gt; e._id === selectedId));
.чтобы получить заученную версиюselected