# Props {#props} > This page assumes you've already read the [Components Basics](/guide/essentials/component-basics). Read that first if you are new to components.
## Props Declaration {#props-declaration} Vue components require explicit props declaration so that Vue knows what external props passed to the component should be treated as fallthrough attributes (which will be discussed in [its dedicated section](/guide/components/attrs)).
In SFCs using ` ``` In non-` ``` More details: [Typing Component Props](/guide/typescript/composition-api#typing-component-props)
## Reactive Props Destructure \*\* {#reactive-props-destructure} Vue's reactivity system tracks state usage based on property access. E.g. when you access `props.foo` in a computed getter or a watcher, the `foo` prop gets tracked as a dependency. So, given the following code: ```js const { foo } = defineProps(['foo']) watchEffect(() => { // runs only once before 3.5 // re-runs when the "foo" prop changes in 3.5+ console.log(foo) }) ``` In version 3.4 and below, `foo` is an actual constant and will never change. In version 3.5 and above, Vue's compiler automatically prepends `props.` when code in the same `