79594742

Date: 2025-04-27 06:32:56
Score: 1.5
Natty:
Report link

Thought I'd tried out everything before asking this question, but apparently not. Here's the way to do it:

import { render } from "solid-js/web";
import { Router, Route,createAsyncStore } from "@solidjs/router";

let ShowDocs = props => (
  <p>
    doc1: {props.doc1.a} <br/>
    doc2: {props.doc2.a} <br/>
    doc3: {props.doc3.a} <br/>
  </p>
);

let Main= props => {
    const docs = {};
    for (let i=1; i<=3; i++)
        docs['doc'+i] = createAsyncStore(() => ({a:'blah'+i}));

    const docs2 = () => {
        const ds = {};
        for (let i=1; i<=3; i++)
            ds['doc'+i] = docs['doc'+i]();
        return ds;
    }

    return (
        <div>
            WORKS:  <ShowDocs doc1={docs.doc1()} doc2={docs.doc2()} doc3={docs.doc3()} /> 

            BUT IS THERE A WAY TO DO SOMETHING LIKE THIS?
                <ShowDocs {...docs2()} />
        </div>
    );
}

render(() => <Router><Route path="/*" component={Main} /></Router>, document.getElementById("app")!);
Reasons:
  • Blacklisted phrase (1): IS THERE A WAY
  • Long answer (-0.5):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: user527388