Update array of signal by index, it does unfocus on typing

When i type a letter on the input it loses focus trying to update and arr based on index.
<For each={names()}>
{(name, index) => (
<div class={styles.inputGroup}>
<input
type="text"
value={name}
onInput={(e) => updateName(index(), e.target.value)}
placeholder="Enter name"
class={styles.input}
/>
</div>
)}
</For>

<For each={names()}>
{(name, index) => (
<div class={styles.inputGroup}>
<input
type="text"
value={name}
onInput={(e) => updateName(index(), e.target.value)}
placeholder="Enter name"
class={styles.input}
/>
</div>
)}
</For>

const [names, setNames] = createSignal([''], { equals: false });

const addName = () => {
setNames([...names(), '']);
};

const updateName = (index: number, value: string) => {
setNames((prev) => {
const newNames = [...prev];
newNames[index] = value;
return newNames;
});
};
const [names, setNames] = createSignal([''], { equals: false });

const addName = () => {
setNames([...names(), '']);
};

const updateName = (index: number, value: string) => {
setNames((prev) => {
const newNames = [...prev];
newNames[index] = value;
return newNames;
});
};
3 Replies
digos
digos2w ago
I think using Index instead of For could fix your problem. https://playground.solidjs.com/anonymous/d0ee62cc-a83b-4504-be28-a2e978e6d882
Lalakis Alfa Ordner
Thanks The A.I. gave wrong suggestion. I am still experimenting
digos
digos2w ago
Yeah happens to me too, I need to visit the docs frequently

Did you find this page helpful?