본문 바로가기
FrameWork/FastAPI

Error components

by mansoorrr 2024. 6. 3.
  • 현재 에러는 alert형식으로 나타남(answer에 아무것도 입력하지 않고 저장 눌렀을때, 없는 질문번호 url로 이동하려 할때)
  • 이걸 페이지화 하기 위해서는 frontend/src/components/Error.svelte파일을 만들어 컴포넌트로 관리

 

[Error component]

  • error를 전달받아 오류를 표시하는 컴포넌트
  • <Error error={{detail: "오류입니다."}} /> 이런 형식으로 전달되야 함
  • 파일 내에서는 export let error 로 에러를 전달받을 수 있음
// Errors.svelte
<script>

export let error

</script>


{#if typeof error.detail === "string"}
<div class="alert alert-danger">
	<div>{error.detail}</div>
</div>
{:else if typeof error.detail === "object" && error.detail.length >= 1 }
<div class="alert alert-danger">
	{#each error.detail as err}
    <div>
    	<strong>{err.loc[1]}</strong>: {err.msg}
    </div>
    {/each}
</div>
{/if}

 

 

[Detail.svelte 수정]

  • 해당 파일에서 Errors 컴포넌트로 에러를 보낼 수 있게 세팅
// Detail.svelte

<script>
import Errors from '../components/Errors.svelte' // 추가

let error = {detail: []} // 추가

function post_answer(event) {
	fastapi('post', url, params, (json) => {
    	content = ""
        error = {detail:[]} //추가: failure_callback 실시되었을 경우 초기화 필요
        get_question()        
    },
    // 추가: failure_callback
    (error_json) => {
    	error = error_json
    }
}

</script>


.....<생략>.....

<Errors error={error} /> //추가: Error컴포넌트에 error전달

<form>
	<textarea> ...
    <input> ...
</form>

 

'FrameWork > FastAPI' 카테고리의 다른 글

Svelte Store  (0) 2024.06.04
Pagination  (0) 2024.06.03
svelte 부트스트랩 적용  (0) 2024.06.03
svelte 부트스트랩 적용  (0) 2024.06.03
해시기반 라우팅, question_detail  (0) 2024.05.28