R
Interview Deckreact · next.js · senior/staff
0·0·122
Padrão

Lifting State Up

Mover estado para o ancestral comum quando dois componentes precisam compartilhar.

Lifting State Up é o padrão de mover state para o componente ancestral mais próximo que ambos os componentes que precisam dele compartilham. Os filhos recebem state via props e callbacks para alterá-lo. É o padrão fundamental de gerenciamento de estado no React.

Problema
Dois componentes irmãos precisam compartilhar/sincronizar estado. Componente A tem state local, B precisa do mesmo valor.
Solução
Mover o state para o pai comum. Pai passa para A e B via props. Para alterar, pai passa callbacks (setX) que filhos invocam.
Tip
Quando o lifting sobe muitos níveis (>3), considere Context, Zustand ou outra solução de state management. Lifting é elegante mas tem limites.
// Pai mantém estado, filhos compartilham via props
function Form() {
  const [shared, setShared] = useState('');

  return (
    <>
      <Input value={shared} onChange={setShared} />
      <Preview value={shared} />
    </>
  );
}

function Input({ value, onChange }) {
  return <input value={value} onChange={e => onChange(e.target.value)} />;
}

function Preview({ value }) {
  return <p>Preview: {value}</p>;
}
Q.Lifting state vs Context API?
A.Lifting: ideal para 2-3 níveis. Mais explícito, melhor para refactor. Context: bom para muitos níveis ou quando muitos componentes consomem. Trade-off: explicitness vs convenience.
Q.Quando NÃO usar lifting?
A.Quando o state sobe demais (5+ níveis) e polui componentes que não usam. Quando muitos componentes em locais distantes precisam acessar — Context, Zustand ou Redux são melhores.
Q.Como combinar lifting com performance?
A.Memoize callbacks com useCallback ao passar para filhos memoizados. Considere splitting de state — partes que mudam frequentemente vs partes estáveis em diferentes lugares.
33/122← →