pub enum PatchFlags {
Show 14 variants
Text,
Class,
Style,
Props,
FullProps,
NeedHydration,
StableFragment,
KeyedFragment,
UnkeyedFragment,
NeedPatch,
DynamicSlots,
DevRootFragment,
Hoisted,
Bail,
}Expand description
From https://github.com/vuejs/core/blob/b8fc18c0b23be9a77b05dc41ed452a87a0becf82/packages/shared/src/patchFlags.ts
Variants§
Text
- Indicates an element with dynamic textContent (children fast path)
Class
- Indicates an element with dynamic class binding.
Style
- Indicates an element with dynamic style
- The compiler pre-compiles static string styles into static objects
-
- detects and hoists inline static objects
- e.g.
style="color: red"and:style="{ color: 'red' }"both get hoisted - as:
- const style = { color: ‘red’ }
- render() { return e(‘div’, { style }) }
-
Props
- Indicates an element that has non-class/style dynamic props.
- Can also be on a component that has any dynamic props (includes
- class/style). when this flag is present, the vnode also has a dynamicProps
- array that contains the keys of the props that may change so the runtime
- can diff them faster (without having to worry about removed props)
FullProps
- Indicates an element with props with dynamic keys. When keys change, a full
- diff is always needed to remove the old key. This flag is mutually
- exclusive with CLASS, STYLE and PROPS.
NeedHydration
- Indicates an element that requires props hydration
- (but not necessarily patching)
- e.g. event listeners & v-bind with prop modifier
StableFragment
- Indicates a fragment whose children order doesn’t change.
KeyedFragment
- Indicates a fragment with keyed or partially keyed children
UnkeyedFragment
- Indicates a fragment with unkeyed children.
NeedPatch
- Indicates an element that only needs non-props patching, e.g. ref or
- directives (onVnodeXXX hooks). since every patched vnode checks for refs
- and onVnodeXXX hooks, it simply marks the vnode so that a parent block
- will track it.
DynamicSlots
- Indicates a component with dynamic slots (e.g. slot that references a v-for
- iterated value, or dynamic slot names).
- Components with this flag are always force updated.
DevRootFragment
- Indicates a fragment that was created only because the user has placed
- comments at the root level of a template. This is a dev-only flag since
- comments are stripped in production.
Hoisted
-
SPECIAL FLAGS ———————————————————––
-
Special flags are negative integers. They are never matched against using
-
bitwise operators (bitwise matching should only happen in branches where
-
patchFlag > 0), and are mutually exclusive. When checking for a special
-
flag, simply check patchFlag === FLAG.
-
Indicates a hoisted static vnode. This is a hint for hydration to skip
-
the entire sub tree since static content never needs to be updated.
Bail
- A special flag that indicates that the diffing algorithm should bail out
- of optimized mode. For example, on block fragments created by renderSlot()
- when encountering non-compiler generated slots (i.e. manually written
- render functions, which should always be fully diffed)
- OR manually cloneVNodes
Trait Implementations§
Source§impl<R> BitAnd<R> for PatchFlags
impl<R> BitAnd<R> for PatchFlags
Source§impl<R> BitOr<R> for PatchFlags
impl<R> BitOr<R> for PatchFlags
Source§impl<R> BitXor<R> for PatchFlags
impl<R> BitXor<R> for PatchFlags
Source§impl Clone for PatchFlags
impl Clone for PatchFlags
Source§fn clone(&self) -> PatchFlags
fn clone(&self) -> PatchFlags
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PatchFlags
impl Debug for PatchFlags
Source§impl Default for PatchFlags
impl Default for PatchFlags
Source§fn default() -> PatchFlags
fn default() -> PatchFlags
Returns the “default value” for a type. Read more
Source§impl From<PatchFlags> for FlagSet<PatchFlags>
impl From<PatchFlags> for FlagSet<PatchFlags>
Source§fn from(value: PatchFlags) -> FlagSet<PatchFlags>
fn from(value: PatchFlags) -> FlagSet<PatchFlags>
Converts to this type from the input type.
Source§impl Not for PatchFlags
impl Not for PatchFlags
Source§impl PartialEq for PatchFlags
impl PartialEq for PatchFlags
Source§impl<R> Rem<R> for PatchFlags
impl<R> Rem<R> for PatchFlags
Source§impl<R> Sub<R> for PatchFlags
impl<R> Sub<R> for PatchFlags
impl Copy for PatchFlags
impl Eq for PatchFlags
impl StructuralPartialEq for PatchFlags
Auto Trait Implementations§
impl Freeze for PatchFlags
impl RefUnwindSafe for PatchFlags
impl Send for PatchFlags
impl Sync for PatchFlags
impl Unpin for PatchFlags
impl UnwindSafe for PatchFlags
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.