Compare commits
1 Commits
asserts-st
...
pr34440
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d9c3927ea |
@@ -0,0 +1,87 @@
|
|||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({initialName}) {
|
||||||
|
const [name, setName] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setName(initialName);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<input value={name} onChange={e => setName(e.target.value)} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{initialName: 'John'}],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Code
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
import { c as _c } from "react/compiler-runtime"; // @validateNoDerivedComputationsInEffects
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
|
||||||
|
function Component(t0) {
|
||||||
|
const $ = _c(6);
|
||||||
|
const { initialName } = t0;
|
||||||
|
const [name, setName] = useState("");
|
||||||
|
let t1;
|
||||||
|
if ($[0] !== initialName) {
|
||||||
|
t1 = () => {
|
||||||
|
setName(initialName);
|
||||||
|
};
|
||||||
|
$[0] = initialName;
|
||||||
|
$[1] = t1;
|
||||||
|
} else {
|
||||||
|
t1 = $[1];
|
||||||
|
}
|
||||||
|
let t2;
|
||||||
|
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
||||||
|
t2 = [];
|
||||||
|
$[2] = t2;
|
||||||
|
} else {
|
||||||
|
t2 = $[2];
|
||||||
|
}
|
||||||
|
useEffect(t1, t2);
|
||||||
|
let t3;
|
||||||
|
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
||||||
|
t3 = (e) => setName(e.target.value);
|
||||||
|
$[3] = t3;
|
||||||
|
} else {
|
||||||
|
t3 = $[3];
|
||||||
|
}
|
||||||
|
let t4;
|
||||||
|
if ($[4] !== name) {
|
||||||
|
t4 = (
|
||||||
|
<div>
|
||||||
|
<input value={name} onChange={t3} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
$[4] = name;
|
||||||
|
$[5] = t4;
|
||||||
|
} else {
|
||||||
|
t4 = $[5];
|
||||||
|
}
|
||||||
|
return t4;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{ initialName: "John" }],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Eval output
|
||||||
|
(kind: ok) <div><input value="John"></div>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({initialName}) {
|
||||||
|
const [name, setName] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setName(initialName);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<input value={name} onChange={e => setName(e.target.value)} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{initialName: 'John'}],
|
||||||
|
};
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({value, enabled}) {
|
||||||
|
const [localValue, setLocalValue] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (enabled) {
|
||||||
|
setLocalValue(value);
|
||||||
|
} else {
|
||||||
|
setLocalValue('disabled');
|
||||||
|
}
|
||||||
|
}, [value, enabled]);
|
||||||
|
|
||||||
|
return <div>{localValue}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{value: 'test', enabled: true}],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Code
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
import { c as _c } from "react/compiler-runtime"; // @validateNoDerivedComputationsInEffects
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
|
||||||
|
function Component(t0) {
|
||||||
|
const $ = _c(6);
|
||||||
|
const { value, enabled } = t0;
|
||||||
|
const [localValue, setLocalValue] = useState("");
|
||||||
|
let t1;
|
||||||
|
let t2;
|
||||||
|
if ($[0] !== enabled || $[1] !== value) {
|
||||||
|
t1 = () => {
|
||||||
|
if (enabled) {
|
||||||
|
setLocalValue(value);
|
||||||
|
} else {
|
||||||
|
setLocalValue("disabled");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
t2 = [value, enabled];
|
||||||
|
$[0] = enabled;
|
||||||
|
$[1] = value;
|
||||||
|
$[2] = t1;
|
||||||
|
$[3] = t2;
|
||||||
|
} else {
|
||||||
|
t1 = $[2];
|
||||||
|
t2 = $[3];
|
||||||
|
}
|
||||||
|
useEffect(t1, t2);
|
||||||
|
let t3;
|
||||||
|
if ($[4] !== localValue) {
|
||||||
|
t3 = <div>{localValue}</div>;
|
||||||
|
$[4] = localValue;
|
||||||
|
$[5] = t3;
|
||||||
|
} else {
|
||||||
|
t3 = $[5];
|
||||||
|
}
|
||||||
|
return t3;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{ value: "test", enabled: true }],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Eval output
|
||||||
|
(kind: ok) <div>test</div>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({value, enabled}) {
|
||||||
|
const [localValue, setLocalValue] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (enabled) {
|
||||||
|
setLocalValue(value);
|
||||||
|
} else {
|
||||||
|
setLocalValue('disabled');
|
||||||
|
}
|
||||||
|
}, [value, enabled]);
|
||||||
|
|
||||||
|
return <div>{localValue}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{value: 'test', enabled: true}],
|
||||||
|
};
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({value}) {
|
||||||
|
const [localValue, setLocalValue] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
console.log('Value changed:', value);
|
||||||
|
setLocalValue(value);
|
||||||
|
document.title = `Value: ${value}`;
|
||||||
|
}, [value]);
|
||||||
|
|
||||||
|
return <div>{localValue}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{value: 'test'}],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Code
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
import { c as _c } from "react/compiler-runtime"; // @validateNoDerivedComputationsInEffects
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
|
||||||
|
function Component(t0) {
|
||||||
|
const $ = _c(5);
|
||||||
|
const { value } = t0;
|
||||||
|
const [localValue, setLocalValue] = useState("");
|
||||||
|
let t1;
|
||||||
|
let t2;
|
||||||
|
if ($[0] !== value) {
|
||||||
|
t1 = () => {
|
||||||
|
console.log("Value changed:", value);
|
||||||
|
setLocalValue(value);
|
||||||
|
document.title = `Value: ${value}`;
|
||||||
|
};
|
||||||
|
t2 = [value];
|
||||||
|
$[0] = value;
|
||||||
|
$[1] = t1;
|
||||||
|
$[2] = t2;
|
||||||
|
} else {
|
||||||
|
t1 = $[1];
|
||||||
|
t2 = $[2];
|
||||||
|
}
|
||||||
|
useEffect(t1, t2);
|
||||||
|
let t3;
|
||||||
|
if ($[3] !== localValue) {
|
||||||
|
t3 = <div>{localValue}</div>;
|
||||||
|
$[3] = localValue;
|
||||||
|
$[4] = t3;
|
||||||
|
} else {
|
||||||
|
t3 = $[4];
|
||||||
|
}
|
||||||
|
return t3;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{ value: "test" }],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Eval output
|
||||||
|
(kind: ok) <div>test</div>
|
||||||
|
logs: ['Value changed:','test']
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({value}) {
|
||||||
|
const [localValue, setLocalValue] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
console.log('Value changed:', value);
|
||||||
|
setLocalValue(value);
|
||||||
|
document.title = `Value: ${value}`;
|
||||||
|
}, [value]);
|
||||||
|
|
||||||
|
return <div>{localValue}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{value: 'test'}],
|
||||||
|
};
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({prefix}) {
|
||||||
|
const [name, setName] = useState('');
|
||||||
|
const [displayName, setDisplayName] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setDisplayName(prefix + name);
|
||||||
|
}, [prefix, name]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<input value={name} onChange={e => setName(e.target.value)} />
|
||||||
|
<div>{displayName}</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{prefix: 'Hello, '}],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Error
|
||||||
|
|
||||||
|
```
|
||||||
|
Found 1 error:
|
||||||
|
|
||||||
|
Error: Values derived from props and state should be calculated during render, not in an effect. (https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state)
|
||||||
|
|
||||||
|
error.derived-state-from-mixed-deps-no-error.ts:9:4
|
||||||
|
7 |
|
||||||
|
8 | useEffect(() => {
|
||||||
|
> 9 | setDisplayName(prefix + name);
|
||||||
|
| ^^^^^^^^^^^^^^ Values derived from props and state should be calculated during render, not in an effect. (https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state)
|
||||||
|
10 | }, [prefix, name]);
|
||||||
|
11 |
|
||||||
|
12 | return (
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({prefix}) {
|
||||||
|
const [name, setName] = useState('');
|
||||||
|
const [displayName, setDisplayName] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setDisplayName(prefix + name);
|
||||||
|
}, [prefix, name]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<input value={name} onChange={e => setName(e.target.value)} />
|
||||||
|
<div>{displayName}</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{prefix: 'Hello, '}],
|
||||||
|
};
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({user: {firstName, lastName}}) {
|
||||||
|
const [fullName, setFullName] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setFullName(firstName + ' ' + lastName);
|
||||||
|
}, [firstName, lastName]);
|
||||||
|
|
||||||
|
return <div>{fullName}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{user: {firstName: 'John', lastName: 'Doe'}}],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Error
|
||||||
|
|
||||||
|
```
|
||||||
|
Found 1 error:
|
||||||
|
|
||||||
|
Error: Values derived from props and state should be calculated during render, not in an effect. (https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state)
|
||||||
|
|
||||||
|
error.invalid-derived-state-from-props-destructured.ts:8:4
|
||||||
|
6 |
|
||||||
|
7 | useEffect(() => {
|
||||||
|
> 8 | setFullName(firstName + ' ' + lastName);
|
||||||
|
| ^^^^^^^^^^^ Values derived from props and state should be calculated during render, not in an effect. (https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state)
|
||||||
|
9 | }, [firstName, lastName]);
|
||||||
|
10 |
|
||||||
|
11 | return <div>{fullName}</div>;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({user: {firstName, lastName}}) {
|
||||||
|
const [fullName, setFullName] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setFullName(firstName + ' ' + lastName);
|
||||||
|
}, [firstName, lastName]);
|
||||||
|
|
||||||
|
return <div>{fullName}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{user: {firstName: 'John', lastName: 'Doe'}}],
|
||||||
|
};
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({firstName, lastName}) {
|
||||||
|
const [fullName, setFullName] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setFullName(firstName + ' ' + lastName);
|
||||||
|
}, [firstName, lastName]);
|
||||||
|
|
||||||
|
return <div>{fullName}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{firstName: 'John', lastName: 'Doe'}],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Error
|
||||||
|
|
||||||
|
```
|
||||||
|
Found 1 error:
|
||||||
|
|
||||||
|
Error: Values derived from props and state should be calculated during render, not in an effect. (https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state)
|
||||||
|
|
||||||
|
error.invalid-derived-state-from-props-in-effect.ts:8:4
|
||||||
|
6 |
|
||||||
|
7 | useEffect(() => {
|
||||||
|
> 8 | setFullName(firstName + ' ' + lastName);
|
||||||
|
| ^^^^^^^^^^^ Values derived from props and state should be calculated during render, not in an effect. (https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state)
|
||||||
|
9 | }, [firstName, lastName]);
|
||||||
|
10 |
|
||||||
|
11 | return <div>{fullName}</div>;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component({firstName, lastName}) {
|
||||||
|
const [fullName, setFullName] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setFullName(firstName + ' ' + lastName);
|
||||||
|
}, [firstName, lastName]);
|
||||||
|
|
||||||
|
return <div>{fullName}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{firstName: 'John', lastName: 'Doe'}],
|
||||||
|
};
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component() {
|
||||||
|
const [firstName, setFirstName] = useState('John');
|
||||||
|
const [lastName, setLastName] = useState('Doe');
|
||||||
|
const [fullName, setFullName] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setFullName(firstName + ' ' + lastName);
|
||||||
|
}, [firstName, lastName]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<input value={firstName} onChange={e => setFirstName(e.target.value)} />
|
||||||
|
<input value={lastName} onChange={e => setLastName(e.target.value)} />
|
||||||
|
<div>{fullName}</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Error
|
||||||
|
|
||||||
|
```
|
||||||
|
Found 1 error:
|
||||||
|
|
||||||
|
Error: Values derived from props and state should be calculated during render, not in an effect. (https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state)
|
||||||
|
|
||||||
|
error.invalid-derived-state-from-state-in-effect.ts:10:4
|
||||||
|
8 |
|
||||||
|
9 | useEffect(() => {
|
||||||
|
> 10 | setFullName(firstName + ' ' + lastName);
|
||||||
|
| ^^^^^^^^^^^ Values derived from props and state should be calculated during render, not in an effect. (https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state)
|
||||||
|
11 | }, [firstName, lastName]);
|
||||||
|
12 |
|
||||||
|
13 | return (
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component() {
|
||||||
|
const [firstName, setFirstName] = useState('John');
|
||||||
|
const [lastName, setLastName] = useState('Doe');
|
||||||
|
const [fullName, setFullName] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setFullName(firstName + ' ' + lastName);
|
||||||
|
}, [firstName, lastName]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<input value={firstName} onChange={e => setFirstName(e.target.value)} />
|
||||||
|
<input value={lastName} onChange={e => setLastName(e.target.value)} />
|
||||||
|
<div>{fullName}</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [],
|
||||||
|
};
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component(props) {
|
||||||
|
const [displayValue, setDisplayValue] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const computed = props.prefix + props.value + props.suffix;
|
||||||
|
setDisplayValue(computed);
|
||||||
|
}, [props.prefix, props.value, props.suffix]);
|
||||||
|
|
||||||
|
return <div>{displayValue}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{prefix: '[', value: 'test', suffix: ']'}],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Code
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
import { c as _c } from "react/compiler-runtime"; // @validateNoDerivedComputationsInEffects
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
|
||||||
|
function Component(props) {
|
||||||
|
const $ = _c(7);
|
||||||
|
const [displayValue, setDisplayValue] = useState("");
|
||||||
|
let t0;
|
||||||
|
let t1;
|
||||||
|
if ($[0] !== props.prefix || $[1] !== props.suffix || $[2] !== props.value) {
|
||||||
|
t0 = () => {
|
||||||
|
const computed = props.prefix + props.value + props.suffix;
|
||||||
|
setDisplayValue(computed);
|
||||||
|
};
|
||||||
|
t1 = [props.prefix, props.value, props.suffix];
|
||||||
|
$[0] = props.prefix;
|
||||||
|
$[1] = props.suffix;
|
||||||
|
$[2] = props.value;
|
||||||
|
$[3] = t0;
|
||||||
|
$[4] = t1;
|
||||||
|
} else {
|
||||||
|
t0 = $[3];
|
||||||
|
t1 = $[4];
|
||||||
|
}
|
||||||
|
useEffect(t0, t1);
|
||||||
|
let t2;
|
||||||
|
if ($[5] !== displayValue) {
|
||||||
|
t2 = <div>{displayValue}</div>;
|
||||||
|
$[5] = displayValue;
|
||||||
|
$[6] = t2;
|
||||||
|
} else {
|
||||||
|
t2 = $[6];
|
||||||
|
}
|
||||||
|
return t2;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{ prefix: "[", value: "test", suffix: "]" }],
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Eval output
|
||||||
|
(kind: ok) <div>[test]</div>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
// @validateNoDerivedComputationsInEffects
|
||||||
|
import {useEffect, useState} from 'react';
|
||||||
|
|
||||||
|
function Component(props) {
|
||||||
|
const [displayValue, setDisplayValue] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const computed = props.prefix + props.value + props.suffix;
|
||||||
|
setDisplayValue(computed);
|
||||||
|
}, [props.prefix, props.value, props.suffix]);
|
||||||
|
|
||||||
|
return <div>{displayValue}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
|
fn: Component,
|
||||||
|
params: [{prefix: '[', value: 'test', suffix: ']'}],
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user