Ignore write while rendering warning in memo lazy recompute (#3647)

This commit is contained in:
Evan Almloff authored and GitHub committed 2025-01-27 14:33:15 -08:00
1 parent bd30516490
commit c85018300b
1 file changed
+5 -1
+5 -1
View File
@@ -1,3 +1,4 @@
use crate::warnings::{signal_read_and_write_in_reactive_scope, signal_write_in_component_body};
use crate::write::Writable;
use crate::{read::Readable, ReadableRef, Signal};
use crate::{read_impls, GlobalMemo};
@@ -11,6 +12,7 @@ use std::{
use dioxus_core::prelude::*;
use futures_util::StreamExt;
use generational_box::{AnyStorage, BorrowResult, UnsyncStorage};
use warnings::Warning;
struct UpdateInformation<T> {
dirty: Arc<AtomicBool>,
@@ -179,7 +181,9 @@ where
let result = if needs_update {
drop(read);
// We shouldn't be subscribed to the value here so we don't trigger the scope we are currently in to rerun even though that scope got the latest value because we synchronously update the value: https://github.com/DioxusLabs/dioxus/issues/2416
self.recompute();
signal_read_and_write_in_reactive_scope::allow(|| {
signal_write_in_component_body::allow(|| self.recompute())
});
self.inner.inner.try_read_unchecked()
} else {
Ok(read)