solidjs / solid-docs-next

SolidJS Docs.
https://docs.solidjs.com/
212 stars 244 forks source link

[Content]: misleading section about when derived-signals are called #692

Open georgfaust opened 4 months ago

georgfaust commented 4 months ago

📚 Subject area/topic

concepts/derived-values/derived-signals

📋 Page(s) affected (or suggested, for new content)

https://docs.solidjs.com/concepts/derived-values/derived-signals

📋 Description of content that is out-of-date or incorrect

These functions are not executed immediately, but instead are only called when the values they rely on are changed. When the underlying signal is changed, the function will be called again to produce a new value.

I'm beginning with solidjs, so maybe I got this wrong, but I think this is at least misleading.

It is not called when count() changed (click "call inc"). It is only called, if it is explicitly called (in the example click "call double") or if it is used in a reactive context (uncomment {/*<div>double: {double()}</div>*/})

🖥️ Reproduction in StackBlitz (if reporting incorrect content or code samples)

import { render } from "solid-js/web";
import { createSignal } from "solid-js";

function App() {
    const [count, setCount] = createSignal(0);

    const inc = () => setCount(count() + 1)
    const double = () => {console.log("double called"); return count() * 2}

    return (
        <div>
            <div>count: {count()}</div>
            {/*<div>double: {double()}</div>*/}
            <button onClick={() => inc()}>call inc</button>
            <button onClick={() => double()}>call double</button>
        </div>
    );
}

render(() => <App />, document.getElementById('app'));