From c85018300b5ee4df3f715ec9507421b3892317a5 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Mon, 27 Jan 2025 16:33:15 -0600 Subject: [PATCH] Ignore write while rendering warning in memo lazy recompute (#3647) --- packages/signals/src/memo.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/signals/src/memo.rs b/packages/signals/src/memo.rs index 3b1bdab70..0be7e8598 100644 --- a/packages/signals/src/memo.rs +++ b/packages/signals/src/memo.rs @@ -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 { dirty: Arc, @@ -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)