gpt4 book ai didi

graphql - 使用 Sapper 刷新预加载数据

转载 作者:行者123 更新时间:2023-12-05 07:17:41 25 4
gpt4 key购买 nike

我目前正在学习 Sapper 并将其与 GraphQL 服务集成。

为了从一个简单的地方开始,我制作了一个常见问题解答页面,其中包含一个简单的问题/答案列表以及一个创建表单。

<script context="module">
import graphql from '../graphql';
import gql from 'graphql-tag';

export function preload({ params, query }) {
const graphQuery = gql`
{
faqEntries {
question,
answer
}
}
`;

return graphql.request(graphQuery).then((data) => data);
}
</script>

<script>
import title from './title';
import Input from '../components/form/Input';
import Button from '../components/Button';

export let faqEntries;

const newEntry = {
question: '',
answer: '',
};

const addEntry = () => {
console.log(newEntry);
graphql.request(gql`
mutation {
createFaqEntry(
question: "${newEntry.question}"
answer: "${newEntry.answer}"
) {
id
question
answer
}
}
`).then((data) => {
console.log(data);
newEntry.question = '';
newEntry.answer = '';
})
}
</script>

<svelte:head>
<title>{title('Foire aux questions')}</title>
</svelte:head>

<section class="container">
<h1>Foire aux questions</h1>

<form on:submit|preventDefault>
<Input id="question" label="Question" bind:value={newEntry.question} />
<Input id="answer" label="Réponse" bind:value={newEntry.answer} />
<Button on:click={addEntry} >Ajouter une entrée</Button>
</form>

{#each faqEntries as faqEntry}
<div class="py-4">
<h4>{faqEntry.question}</h4>
<p>
{faqEntry.answer}
</p>
</div>
{/each}
</section>

当前脚本运行良好,允许我直接从编码表单添加 FAQ 条目。

现在,我想在提交新条目时刷新 FAQ 条目列表。

执行此操作的最佳做​​法是什么?另外,我的 GraphQL 实现是否以正确的方式完成?

最佳答案

您可以重用预加载函数来刷新数据:

  .then((data) => {
console.log(data);
newEntry.question = '';
newEntry.answer = '';

preload().then(props => {
faqEntries = props.faqEntries
})

当您想要显示其他用户以进行额外的 api 调用为代价添加的条目时,该方法很有用。

但是如果你只想添加最近添加的条目:

  .then((data) => {
faqEntries = [...faqEntries, {...newEntry}]

关于graphql - 使用 Sapper 刷新预加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58673525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com