Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 25 additions & 25 deletions benchmarks/src/reactive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ fn leptos_deep_creation(b: &mut Bencher) {
let runtime = create_runtime();

b.iter(|| {
let signal = create_rw_signal(0);
let signal = RwSignal::new(0);
let mut memos = Vec::<Memo<usize>>::new();
for _ in 0..1000usize {
let prev = memos.last().copied();
if let Some(prev) = prev {
memos.push(create_memo(move |_| prev.get() + 1));
memos.push(Memo::new(move |_| prev.get() + 1));
} else {
memos.push(create_memo(move |_| signal.get() + 1));
memos.push(Memo::new(move |_| signal.get() + 1));
}
}
});
Expand All @@ -28,13 +28,13 @@ fn leptos_deep_update(b: &mut Bencher) {
let runtime = create_runtime();

b.iter(|| {
let signal = create_rw_signal(0);
let signal = RwSignal::new(0);
let mut memos = Vec::<Memo<usize>>::new();
for _ in 0..1000usize {
if let Some(prev) = memos.last().copied() {
memos.push(create_memo(move |_| prev.get() + 1));
memos.push(Memo::new(move |_| prev.get() + 1));
} else {
memos.push(create_memo(move |_| signal.get() + 1));
memos.push(Memo::new(move |_| signal.get() + 1));
}
}
signal.set(1);
Expand All @@ -50,11 +50,11 @@ fn leptos_narrowing_down(b: &mut Bencher) {
let runtime = create_runtime();

b.iter(|| {
let sigs = (0..1000).map(|n| create_signal(n)).collect::<Vec<_>>();
let sigs = (0..1000).map(|n| signal(n)).collect::<Vec<_>>();
let reads = sigs.iter().map(|(r, _)| *r).collect::<Vec<_>>();
let writes = sigs.iter().map(|(_, w)| *w).collect::<Vec<_>>();
let memo =
create_memo(move |_| reads.iter().map(|r| r.get()).sum::<i32>());
Memo::new(move |_| reads.iter().map(|r| r.get()).sum::<i32>());
assert_eq!(memo(), 499500);
});

Expand All @@ -67,9 +67,9 @@ fn leptos_fanning_out(b: &mut Bencher) {
let runtime = create_runtime();

b.iter(|| {
let sig = create_rw_signal(0);
let sig = RwSignal::new(0);
let memos = (0..1000)
.map(|_| create_memo(move |_| sig.get()))
.map(|_| Memo::new(move |_| sig.get()))
.collect::<Vec<_>>();
assert_eq!(memos.iter().map(|m| m.get()).sum::<i32>(), 0);
sig.set(1);
Expand All @@ -86,11 +86,11 @@ fn leptos_narrowing_update(b: &mut Bencher) {

b.iter(|| {
let acc = Rc::new(Cell::new(0));
let sigs = (0..1000).map(|n| create_signal(n)).collect::<Vec<_>>();
let sigs = (0..1000).map(|n| signal(n)).collect::<Vec<_>>();
let reads = sigs.iter().map(|(r, _)| *r).collect::<Vec<_>>();
let writes = sigs.iter().map(|(_, w)| *w).collect::<Vec<_>>();
let memo =
create_memo(move |_| reads.iter().map(|r| r.get()).sum::<i32>());
Memo::new(move |_| reads.iter().map(|r| r.get()).sum::<i32>());
assert_eq!(memo(), 499500);
create_isomorphic_effect({
let acc = Rc::clone(&acc);
Expand Down Expand Up @@ -118,13 +118,13 @@ fn l0410_deep_creation(b: &mut Bencher) {

b.iter(|| {
create_scope(runtime, |cx| {
let signal = create_rw_signal(cx, 0);
let signal = RwSignal::new(cx, 0);
let mut memos = Vec::<Memo<usize>>::new();
for _ in 0..1000usize {
if let Some(prev) = memos.last().copied() {
memos.push(create_memo(cx, move |_| prev.get() + 1));
memos.push(Memo::new(cx, move |_| prev.get() + 1));
} else {
memos.push(create_memo(cx, move |_| signal.get() + 1));
memos.push(Memo::new(cx, move |_| signal.get() + 1));
}
}
})
Expand All @@ -141,13 +141,13 @@ fn l0410_deep_update(b: &mut Bencher) {

b.iter(|| {
create_scope(runtime, |cx| {
let signal = create_rw_signal(cx, 0);
let signal = RwSignal::new(cx, 0);
let mut memos = Vec::<Memo<usize>>::new();
for _ in 0..1000usize {
if let Some(prev) = memos.last().copied() {
memos.push(create_memo(cx, move |_| prev.get() + 1));
memos.push(Memo::new(cx, move |_| prev.get() + 1));
} else {
memos.push(create_memo(cx, move |_| signal.get() + 1));
memos.push(Memo::new(cx, move |_| signal.get() + 1));
}
}
signal.set(1);
Expand All @@ -168,10 +168,10 @@ fn l0410_narrowing_down(b: &mut Bencher) {
create_scope(runtime, |cx| {
let acc = Rc::new(Cell::new(0));
let sigs =
(0..1000).map(|n| create_signal(cx, n)).collect::<Vec<_>>();
(0..1000).map(|n| signal(cx, n)).collect::<Vec<_>>();
let reads = sigs.iter().map(|(r, _)| *r).collect::<Vec<_>>();
let writes = sigs.iter().map(|(_, w)| *w).collect::<Vec<_>>();
let memo = create_memo(cx, move |_| {
let memo = Memo::new(cx, move |_| {
reads.iter().map(|r| r.get()).sum::<i32>()
});
assert_eq!(memo(), 499500);
Expand All @@ -189,9 +189,9 @@ fn l0410_fanning_out(b: &mut Bencher) {

b.iter(|| {
create_scope(runtime, |cx| {
let sig = create_rw_signal(cx, 0);
let sig = RwSignal::new(cx, 0);
let memos = (0..1000)
.map(|_| create_memo(cx, move |_| sig.get()))
.map(|_| Memo::new(cx, move |_| sig.get()))
.collect::<Vec<_>>();
assert_eq!(memos.iter().map(|m| m.get()).sum::<i32>(), 0);
sig.set(1);
Expand All @@ -211,10 +211,10 @@ fn l0410_narrowing_update(b: &mut Bencher) {
create_scope(runtime, |cx| {
let acc = Rc::new(Cell::new(0));
let sigs =
(0..1000).map(|n| create_signal(cx, n)).collect::<Vec<_>>();
(0..1000).map(|n| signal(cx, n)).collect::<Vec<_>>();
let reads = sigs.iter().map(|(r, _)| *r).collect::<Vec<_>>();
let writes = sigs.iter().map(|(_, w)| *w).collect::<Vec<_>>();
let memo = create_memo(cx, move |_| {
let memo = Memo::new(cx, move |_| {
reads.iter().map(|r| r.get()).sum::<i32>()
});
assert_eq!(memo.get(), 499500);
Expand Down Expand Up @@ -251,7 +251,7 @@ fn l0410_scope_creation_and_disposal(b: &mut Bencher) {
create_scope(runtime, {
let acc = Rc::clone(&acc);
move |cx| {
let (r, w) = create_signal(cx, 0);
let (r, w) = signal(cx, 0);
create_isomorphic_effect(cx, {
move |_| {
acc.set(r.get());
Expand Down
6 changes: 3 additions & 3 deletions benchmarks/src/ssr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ fn leptos_ssr_bench(b: &mut Bencher) {
leptos::leptos_dom::HydrationCtx::reset_id();
#[component]
fn Counter(initial: i32) -> impl IntoView {
let (value, set_value) = create_signal(initial);
let (value, set_value) = signal(initial);
view! {
<div>
<button on:click=move |_| set_value.update(|value| *value -= 1)>"-1"</button>
Expand Down Expand Up @@ -37,7 +37,7 @@ fn leptos_ssr_bench(b: &mut Bencher) {

#[bench]
fn tachys_ssr_bench(b: &mut Bencher) {
use leptos::{create_runtime, create_signal, SignalGet, SignalUpdate};
use leptos::{create_runtime, signal, SignalGet, SignalUpdate};
use tachy_maccy::view;
use tachydom::view::{Render, RenderHtml};
use tachydom::html::element::ElementChild;
Expand All @@ -48,7 +48,7 @@ fn tachys_ssr_bench(b: &mut Bencher) {
let rt = create_runtime();
b.iter(|| {
fn counter(initial: i32) -> impl Render<Dom> + RenderHtml<Dom> {
let (value, set_value) = create_signal(initial);
let (value, set_value) = signal(initial);
view! {
<div>
<button on:click=move |_| set_value.update(|value| *value -= 1)>"-1"</button>
Expand Down
14 changes: 7 additions & 7 deletions benchmarks/src/todomvc/leptos.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@ impl Todo {
title: String,
completed: bool,
) -> Self {
let (title, set_title) = create_signal(title);
let (completed, set_completed) = create_signal(completed);
let (title, set_title) = signal(title);
let (completed, set_completed) = signal(completed);
Self {
id,
title,
Expand Down Expand Up @@ -111,10 +111,10 @@ pub fn TodoMVC(todos: Todos) -> impl IntoView {
.map(|last| last + 1)
.unwrap_or(0);

let (todos, set_todos) = create_signal(todos);
let (todos, set_todos) = signal(todos);
provide_context(set_todos);

let (mode, set_mode) = create_signal(Mode::All);
let (mode, set_mode) = signal(Mode::All);

let add_todo = move |ev: web_sys::KeyboardEvent| {
let target = event_target::<HtmlInputElement>(&ev);
Expand All @@ -132,7 +132,7 @@ pub fn TodoMVC(todos: Todos) -> impl IntoView {
}
};

let filtered_todos = create_memo::<Vec<Todo>>(move |_| {
let filtered_todos = Memo::<Vec<Todo>>::new(move |_| {
todos.with(|todos| match mode.get() {
Mode::All => todos.0.to_vec(),
Mode::Active => todos
Expand All @@ -152,7 +152,7 @@ pub fn TodoMVC(todos: Todos) -> impl IntoView {

// effect to serialize to JSON
// this does reactive reads, so it will automatically serialize on any relevant change
create_effect(move |_| {
Effect::new(move |_| {
if let Ok(Some(storage)) = window().local_storage() {
let objs = todos
.get()
Expand Down Expand Up @@ -245,7 +245,7 @@ pub fn TodoMVC(todos: Todos) -> impl IntoView {

#[component]
pub fn Todo(todo: Todo) -> impl IntoView {
let (editing, set_editing) = create_signal(false);
let (editing, set_editing) = signal(false);
let set_todos = use_context::<WriteSignal<Todos>>().unwrap();
//let input = NodeRef::new();

Expand Down
14 changes: 7 additions & 7 deletions benchmarks/src/todomvc/tachys.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ impl Todo {
title: String,
completed: bool,
) -> Self {
let (title, set_title) = create_signal(title);
let (completed, set_completed) = create_signal(completed);
let (title, set_title) = signal(title);
let (completed, set_completed) = signal(completed);
Self {
id,
title,
Expand Down Expand Up @@ -119,10 +119,10 @@ pub fn TodoMVC(todos: Todos) -> impl Render<Dom> + RenderHtml<Dom> {
.map(|last| last + 1)
.unwrap_or(0);

let (todos, set_todos) = create_signal(todos);
let (todos, set_todos) = signal(todos);
provide_context(set_todos);

let (mode, set_mode) = create_signal(Mode::All);
let (mode, set_mode) = signal(Mode::All);

let add_todo = move |ev: web_sys::KeyboardEvent| {
todo!()
Expand All @@ -141,7 +141,7 @@ pub fn TodoMVC(todos: Todos) -> impl Render<Dom> + RenderHtml<Dom> {
} */
};

let filtered_todos = create_memo::<Vec<Todo>>(move |_| {
let filtered_todos = Memo::<Vec<Todo>>::new(move |_| {
todos.with(|todos| match mode.get() {
Mode::All => todos.0.to_vec(),
Mode::Active => todos
Expand All @@ -161,7 +161,7 @@ pub fn TodoMVC(todos: Todos) -> impl Render<Dom> + RenderHtml<Dom> {

// effect to serialize to JSON
// this does reactive reads, so it will automatically serialize on any relevant change
create_effect(move |_| {
Effect::new(move |_| {
()
/* if let Ok(Some(storage)) = window().local_storage() {
let objs = todos
Expand Down Expand Up @@ -249,7 +249,7 @@ pub fn TodoMVC(todos: Todos) -> impl Render<Dom> + RenderHtml<Dom> {
}

pub fn Todo(todo: Todo) -> impl Render<Dom> + RenderHtml<Dom> {
let (editing, set_editing) = create_signal(false);
let (editing, set_editing) = signal(false);
let set_todos = use_context::<WriteSignal<Todos>>().unwrap();
//let input = NodeRef::new();

Expand Down
18 changes: 9 additions & 9 deletions docs/COMMON_BUGS.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ This document is intended as a running list of common issues, with example code
**Issue**: Sometimes you want to update a reactive signal in a way that depends on another signal.

```rust
let (a, set_a) = create_signal(0);
let (b, set_b) = create_signal(false);
let (a, set_a) = signal(0);
let (b, set_b) = signal(false);

create_effect(move |_| {
Effect::new(move |_| {
if a() > 5 {
set_b(true);
}
Expand All @@ -24,7 +24,7 @@ This creates an inefficient chain of updates, and can easily lead to infinite lo
**Solution**: Follow the rule, _What can be derived, should be derived._ In this case, this has the benefit of massively reducing the code size, too!

```rust
let (a, set_a) = create_signal(0);
let (a, set_a) = signal(0);
let b = move || a () > 5;
```

Expand All @@ -35,13 +35,13 @@ Sometimes you have nested signals: for example, hash-map that can change over ti
```rust
#[component]
pub fn App() -> impl IntoView {
let resources = create_rw_signal(HashMap::new());
let resources = RwSignal::new(HashMap::new());

let update = move |id: usize| {
resources.update(|resources| {
resources
.entry(id)
.or_insert_with(|| create_rw_signal(0))
.or_insert_with(|| RwSignal::new(0))
.update(|amount| *amount += 1)
})
};
Expand All @@ -65,7 +65,7 @@ You can fix this fairly easily by using the [`batch()`](https://docs.rs/leptos/l
resources.update(|resources| {
resources
.entry(id)
.or_insert_with(|| create_rw_signal(0))
.or_insert_with(|| RwSignal::new(0))
.update(|amount| *amount += 1)
})
});
Expand All @@ -83,7 +83,7 @@ Many DOM attributes can be updated either by setting an attribute on the DOM nod
This means that in practice, attributes like `value` or `checked` on an `<input/>` element only update the _default_ value for the `<input/>`. If you want to reactively update the value, you should use `prop:value` instead to set the `value` property.

```rust
let (a, set_a) = create_signal("Starting value".to_string());
let (a, set_a) = signal("Starting value".to_string());
let on_input = move |ev| set_a(event_target_value(&ev));

view! {
Expand All @@ -97,7 +97,7 @@ view! {
```

```rust
let (a, set_a) = create_signal("Starting value".to_string());
let (a, set_a) = signal("Starting value".to_string());
let on_input = move |ev| set_a(event_target_value(&ev));

view! {
Expand Down
8 changes: 4 additions & 4 deletions leptos/src/for_loop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ use tachys::{
///
/// #[component]
/// fn Counters() -> impl IntoView {
/// let (counters, set_counters) = create_signal::<Vec<Counter>>(vec![]);
/// let (counters, set_counters) = signal::<Vec<Counter>>(vec![]);
///
/// view! {
/// <div>
Expand Down Expand Up @@ -62,7 +62,7 @@ use tachys::{
/// #
/// # #[component]
/// # fn Counters() -> impl IntoView {
/// # let (counters, set_counters) = create_signal::<Vec<Counter>>(vec![]);
/// # let (counters, set_counters) = signal::<Vec<Counter>>(vec![]);
/// #
/// view! {
/// <div>
Expand Down Expand Up @@ -93,7 +93,7 @@ use tachys::{
/// #
/// # #[component]
/// # fn Counters() -> impl IntoView {
/// # let (counters, set_counters) = create_signal::<Vec<Counter>>(vec![]);
/// # let (counters, set_counters) = signal::<Vec<Counter>>(vec![]);
/// #
/// view! {
/// <div>
Expand Down Expand Up @@ -162,7 +162,7 @@ where
///
/// #[component]
/// fn Counters() -> impl IntoView {
/// let (counters, set_counters) = create_signal::<Vec<Counter>>(vec![]);
/// let (counters, set_counters) = signal::<Vec<Counter>>(vec![]);
///
/// view! {
/// <div>
Expand Down
4 changes: 2 additions & 2 deletions leptos_dom/examples/hydration-test/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ pub fn App() -> impl IntoView {

#[component]
pub fn ComponentA() -> impl IntoView {
let (value, set_value) = create_signal("Hello?".to_string());
let (counter, set_counter) = create_signal(0);
let (value, set_value) = signal("Hello?".to_string());
let (counter, set_counter) = signal(0);

// Test to make sure hydration isn't broken by
// something like this
Expand Down
Loading