AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-403425

Kevin Renskers's questions

Martin Hope
Kevin Renskers
Asked: 2024-11-20 20:07:29 +0800 CST

Carregamento dinâmico de componentes Svelte 5: erros de TypeScript

  • 6

No meu aplicativo Svelte 4, carrego dinamicamente componentes, todos com props diferentes. Reprodução muito simples (também disponível no Svelte Playground ):

// App.svelte
<script lang="ts">
  import One from "./One.svelte";
  import Two from "./Two.svelte";

  import type { ComponentType } from "svelte";

  type Item = {
    component: ComponentType;
  };

  const items: Item[] = [
    { component: One, one: "World" },
    { component: Two, two: "Svelte" },
  ];
</script>

<div class="container py-20 text-white">
  {#each items as item}
    <div>
      <svelte:component this={item.component} {...item} />
    </div>
  {/each}
</div>
// One.svelte
<script lang="ts">
    export let one;
</script>

Hello {one}
// Two.svelte
<script lang="ts">
    export let two;
</script>

Goodbye {two}

Isso funciona bem sem nenhum aviso ou erro, sem reclamações até agora. No entanto, quero migrar para o Svelte 5 e agora estou recebendo um monte de erros do TypeScript. Por exemplo, ComponentTypeestá obsoleto, e coisas assim:

Type '__sveltets_2_IsomorphicComponent<{ one: any; }, { [evt: string]: CustomEvent<any>; }, {}, {}, string>' is not assignable to type 'ComponentType'.
  Type '__sveltets_2_IsomorphicComponent<{ one: any; }, { [evt: string]: CustomEvent<any>; }, {}, {}, string>' is not assignable to type 'new (options: ComponentConstructorOptions<Record<string, any>>) => SvelteComponent<Record<string, any>, any, any>'.
    Types of parameters 'options' and 'options' are incompatible.
      Type 'ComponentConstructorOptions<Record<string, any>>' is not assignable to type 'ComponentConstructorOptions<{ one: any; }>'.
        Property 'one' is missing in type 'Record<string, any>' but required in type '{ one: any; }'.

Como posso refatorar meu código para que ele continue funcionando, sem erros de TypeScript e sem ter que tipar fortemente cada componente? No meu aplicativo do mundo real, há muitos componentes envolvidos, cada um com um monte de props diferentes. Não quero ter que criar aliases de tipo para cada um deles.

A simples alteração ComponentTypepara Componentelimina o aviso de descontinuação, mas o outro aviso ainda é basicamente o mesmo:

Type '__sveltets_2_IsomorphicComponent<{ one: any; }, { [evt: string]: CustomEvent<any>; }, {}, {}, string>' is not assignable to type 'Component<{}, {}, string>'.
  Types of parameters 'props' and 'props' are incompatible.
    Type '{}' is not assignable to type '{ one: any; } & { $$events?: { [evt: string]: CustomEvent<any>; } | undefined; $$slots?: {} | undefined; }'.
      Property 'one' is missing in type '{}' but required in type '{ one: any; }'.ts(2322)

Mudar ComponentTypepara SvelteComponenttambém não melhora as coisas. Quando uso o unknowntipo, recebo este aviso:

Argument of type 'unknown' is not assignable to parameter of type 'ConstructorOfATypedSvelteComponent | Component<any, any, any> | null | undefined'.

Pelo menos é apenas um aviso em vez de vários no array, então é melhor, mas isso não pode ser resolvido de uma maneira melhor (sem digitar cada componente)?

svelte
  • 1 respostas
  • 31 Views
Martin Hope
Kevin Renskers
Asked: 2024-10-25 21:22:37 +0800 CST

Inicie meu Fish Shell sempre em casa, em vez do local anterior?

  • 5

Eu uso o shell Fish, usando a configuração deste repositório dotfiles: https://github.com/kevinrenskers/dotfiles/tree/main/fish .

O problema é que sempre que abro uma nova aba no meu terminal, ela começa do caminho anterior, em vez da pasta home do meu usuário. Como posso mudar esse comportamento para que todo terminal sempre abra de ~?

O estranho é que eu uso esses dotfiles há muito tempo e nunca tive esse problema até formatar meu computador e configurá-lo do zero. Não faço ideia do porquê agora ele se comporta assim, mas eu realmente não gosto.

fish
  • 1 respostas
  • 18 Views
Martin Hope
Kevin Renskers
Asked: 2024-07-15 23:25:55 +0800 CST

SvelteKit não está armazenando cookies ao fazer uma solicitação dentro da função `load`

  • 6

No meu site SvelteKit eu faço uma solicitação ao meu backend dentro da LayoutServerLoadfunção, em formato +layout.server.ts. Ou seja, quando o site é aberto com um ?affiliate_id=blaparâmetro de consulta, quero enviar isso para o backend:

import type { LayoutServerLoad } from "./$types";
import { keyBy } from "$lib/utils";
import { backendUrl } from "$lib/config";

export const trailingSlash = "always";

export const load: LayoutServerLoad = async ({ locals, url, fetch }) => {
  const affiliate_id = url.searchParams.get("affiliate_id");
  if (affiliate_id) {
    const headers = {
      "Content-Type": "application/json",
      "X-CSRFToken": locals.csrfToken,
    };

    fetch(`${backendUrl}/shop/basket/`, { method: "POST", credentials: "include", headers, body: JSON.stringify({ affiliate_id }) })
      .catch(error => {
        console.error("Error storing affiliate_id: ", error);
      });
  }

  return {
    // I'm returning a bunch of data here
  };
};

O problema é que a resposta do backend contém um set-cookiecabeçalho e o cookie não está sendo armazenado no navegador.

Quando mudo minha loadfunção para apenas retornar affiliate_id:

export const load: LayoutServerLoad = async ({ locals, url }) => {
  return {
    affiliateId: url.searchParams.get("affiliate_id"),
    // and more data
  };
};

E então faça a solicitação dentro de +layout.svelte, então tudo funcionará bem.

<script lang="ts">
  import type { PageData } from "./$types";
  import { onMount } from "svelte";

  export let data: PageData;
  const { affiliateId } = data;

  onMount(async () => {
    if (affiliateId) {
      // Do the request here
    }
  });
</script>

<slot />

Agora o cookie da resposta está armazenado perfeitamente no navegador.

Por que o cookie não é armazenado ao fazer a mesma solicitação na loadfunção?

sveltekit
  • 1 respostas
  • 17 Views
Martin Hope
Kevin Renskers
Asked: 2023-09-11 20:53:12 +0800 CST

Django Admin: mostrar vários aplicativos juntos em uma seção?

  • 6

Estou trabalhando em uma API Django para uma loja virtual e organizei os modelos e visualizações em diferentes aplicativos: um para pedidos, um para cestas, um para produtos e um para ofertas. Agora quero adicionar esses modelos ao site de administração, mas não quero que apareçam como quatro seções diferentes, cada uma com um modelo para gerenciar. Em vez disso, quero uma nova seção "Loja", onde mostro os modelos de todos esses aplicativos.

Então, em vez disso:

insira a descrição da imagem aqui

Quero os dois modelos em uma seção comum. Isso é possível?

Tentei definir o mesmo nome detalhado no apps.pyarquivo de ambos os aplicativos, mas isso resultou apenas em duas seções com o mesmo nome:

insira a descrição da imagem aqui

django
  • 2 respostas
  • 24 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve