Вопрос проверяет понимание разницы между локальным состоянием компонента и внешним хранилищем данных, а также влияние этого выбора на архитектуру приложения.
Данные таблицы могут находиться внутри компонента (в его локальном состоянии) или быть вынесены во внешнее хранилище, такое как Redux, контекст React, или серверное состояние через библиотеки вроде React Query. Этот выбор напрямую влияет на архитектуру приложения, его масштабируемость и поддерживаемость.
Когда данные хранятся внутри компонента, они изолированы и доступны только ему. Это удобно для простых, независимых таблиц, которые не нужно синхронизировать с другими частями приложения.
import React, { useState } from 'react';
function SimpleTable() {
const [data, setData] = useState([
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' }
]);
return (
<table>
{data.map(row => (
<tr key={row.id}><td>{row.name}</td></tr>
))}
</table>
);
}Плюсы: простота, отсутствие зависимостей. Минусы: данные нельзя легко передать другому компоненту, сложно тестировать изоляцию.
Когда данные хранятся снаружи, например, в Redux store, они становятся глобально доступными. Это необходимо для таблиц, которые отображаются на нескольких страницах или обновляются из разных источников.
// actions.js
export const setTableData = (data) => ({
type: 'SET_TABLE_DATA',
payload: data
});
// reducer.js
const initialState = { tableData: [] };
export default function tableReducer(state = initialState, action) {
switch (action.type) {
case 'SET_TABLE_DATA':
return { ...state, tableData: action.payload };
default:
return state;
}
}Плюсы: централизованное управление, легкость синхронизации, упрощение тестирования через моки. Минусы: избыточность для простых случаев, усложнение архитектуры.
Вывод: храните данные локально, если таблица независима и не требует синхронизации. Используйте внешнее хранилище, когда данные должны быть доступны нескольким компонентам или требуют сложной логики обновления. Это сохранит архитектуру гибкой и поддерживаемой.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию