SolidJSS
SolidJSโ€ข13mo agoโ€ข
9 replies
pepr

Child Component not Re-rendering

So I have this code
import { createEffect, createSignal, onCleanup, Show } from "solid-js";
import { invoke } from "@tauri-apps/api/core";
import Weapon from "./weapon/Weapon";

function Weapons() {
    const [playerInventory, setPlayerInventory] = createSignal<any>(null);

    let intervalId: any;

    createEffect(async () => {
        intervalId = setInterval(async () => {
            const response: any = await invoke("send", { message: "get_player_inventory" });
            setPlayerInventory(response.player_inventory);
        }, 500);
    });

    onCleanup(() => clearInterval(intervalId));

    const handleWeaponChange = async (weapon: any) => {
        setPlayerInventory({ ...playerInventory(), weapon: weapon });
        await invoke("send", { message: { set_player_inventory: playerInventory() } });
    }

    return (
        <Show when={playerInventory() != null}>
            <main id="weapons-container">
                <Weapon weapon_={playerInventory().weapon} on_change={handleWeaponChange}></Weapon>
            </main>
        </Show>
    );
}

export default Weapons;


When player inventory is set via the interval (note that it's state does change) the weapon component doesn't re-render. I've tried a lot of things and can't get it to.
Was this page helpful?