1.1.0 • Published 2 years ago

vue-boundary v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Introduction

This plugin available an component to catches javascript errors in a vue 2 component and handles it by rendering a fallback component, isolating the error and handling it specifically, ensuring that the rest of the application is not affected by an isolated error in some UI component.

Error Boundaries is a concept introduces by React 16: Read more about

 yarn add vue-boundary  // npm install --save vue-boundary

Global

import Vue from 'vue';
import VueBoundary from "vue-boundary";

Vue.use(VueBoundary);

Local

import VueBoundary from "vue-boundary";

export default {
  components: {
    VueBoundary
  },
};

📌 Usage

Fallback component

With slot #fallback
<template>
  <VueBoundary @error-captured="onError" >
      <SomeComponent />

      <template #fallback>
        <div>Oops, something went wrong!</div>
      </template>
  </VueBoundary>
</template>

<script>
export default {
    methods:{
        onError({ error, info, vm }){
            console.error(error.fileName, error.message, error.stack)
            console.error('Error info =>', info)
            console.error('Component instance =>', vm)
        }
    }
}
</script>
with prop fallback
<template>
  <VueBoundary :fallback="ErrorMessage">
      <SomeComponent />
  </VueBoundary>
</template>

<script>
import ErrorCard from './ErrorCard.vue'

export default {
    data: () => ({
        ErrorMessage: ErrorCard
    }),
}
</script>

Error catch

Whit prop onError
<template>
  <VueBoundary :onError="myCallbackHere" >
      ...
  </VueBoundary>
</template>

<script>

export default {
    ...
    methods:{
        myCallbackHere({ error, info, vm }){
            console.error(error, info, vm)
        }
    }
}
</script>
Or errorCaptured event
<template>
  <VueBoundary :fallback="componentFallback" :@errorCaptured="onErrorCaptured" >
      ...
  </VueBoundary>
</template>

<script>

export default {
    ...
    methods:{
        onErrorCaptured({ error, info, vm }){
            console.error(error, info, vm)
        }
    }
}
</script>

Props

NametypeDefaultdescription
onErrorFunctionundefinedCallback to listen when an error it's captured, receive an object with 3 property: error, info and vm
fallbackObjectnullComponent to render if the default slot catch an error.
propagationBooleanfalsePrevents further propagation of the current error for another "errorCaptured" parents hooks. https://vuejs.org/v2/api/#errorCaptured

Events

NameDescription
error-capturedReceive an object with 3 property: error, info and vm

Slots

NameDescription
defaultThe default slot
fallbackSlot to render if the default slot catch an error.

🔖 License

MIT

1.1.0

2 years ago

1.0.0

2 years ago