Pattern: Reassigning reactive values
Issue: -
This rule aims to prevent unintended behavior caused by modification or reassignment of reactive values.
<script>
/* eslint svelte/no-reactive-reassign: "error" */
let value = 0;
$: reactiveValue = value * 2;
function handleClick() {
/* ✓ GOOD */
value++;
/* ✗ BAD */
reactiveValue = value * 3;
reactiveValue++;
}
</script>
<!-- ✓ GOOD -->
<input type="number" bind:value />
<!-- ✗ BAD -->
<input type="number" bind:value={reactiveValue} />
{
"svelte/no-reactive-reassign": [
"error",
{
"props": true
}
]
}
props
... If set totrue
, this rule warns against the modification of reactive value properties. Default istrue
.
<script>
/* eslint svelte/no-reactive-reassign: ["error", { "props": true }] */
let value = 0;
$: reactiveValue = { value: value * 2 };
function handleClick() {
/* ✓ GOOD */
value++;
/* ✗ BAD */
reactiveValue.value++;
reactiveValue = { value: reactiveValue.value + 1 };
}
</script>
<!-- ✓ GOOD -->
<input type="number" bind:value />
<!-- ✗ BAD -->
<input type="number" bind:value={reactiveValue.value} />
<MyComponent bind:objectValue={reactiveValue} />
<script>
/* eslint svelte/no-reactive-reassign: ["error", { "props": false }] */
let value = 0;
$: reactiveValue = { value: value * 2 };
function handleClick() {
/* ✓ GOOD */
value++;
/* OK */
reactiveValue.value++;
/* ✗ BAD */
reactiveValue = { value: reactiveValue.value + 1 };
}
</script>
<!-- ✓ GOOD -->
<input type="number" bind:value />
<!-- OK -->
<input type="number" bind:value={reactiveValue.value} />
<!-- ✗ BAD -->
<MyComponent bind:objectValue={reactiveValue} />
This rule was introduced in eslint-plugin-svelte v2.27.0