Estou com dificuldade para entender o uso de Runas e carregamento de dados. Carrego um arquivo json supabase e quero acessar os dados globalmente.
// +page.server.js
export async function load() {
const [_portfolioSummary, error] = await getFullPortfolio('/');
return _portfolioSummary;
}
// shared.svelte.js
export let portfolioSummary = $state({});
// +page.js
import { portfolioSummary } from '../lib/js/shared.svelte.js';
export async function load({ data }) {
portfolioSummary = data.portfolioSummary;
}
Recebo este erro:
TypeError: Não é possível definir uma propriedade
portfolioSummary
que#<Object>
possui apenas um getter
O que devo fazer para obter portfolioData
alcance global e poder usá-lo em qualquer lugar?
Você deve apenas retornar os dados diretamente de uma
load
função.Eles estarão automaticamente disponíveis em todos os lugares por meio de um store :
$page.data
.Editar : Há alguns minutos, também existe uma versão baseada em runas de
page
in$app/state
( ).@sveltejs/[email protected]
Se você tentar definir variáveis globais, também corre o risco de expor dados que pertencem a um usuário para outro usuário (já que o estado no servidor é compartilhado entre todas as solicitações).
(A exportação
$state
precisaria envolver o conteúdo em uma propriedade, por exemplo{ current: ... }
, então essa propriedade pode ser atualizada, já que reatribuições da importação em si não são possíveis.)