Skip to content

Commit

Permalink
[compiler] Fixture to demonstrate issue with returning object contain…
Browse files Browse the repository at this point in the history
…ing ref

Summary:
We currently can return a ref from a hook but not an object containing a ref.

ghstack-source-id: 8b1de4991eb2731b7f758e685ba62d9f07d584b2
Pull Request resolved: #30820
  • Loading branch information
mvitousek committed Aug 27, 2024
1 parent 96aca5f commit f2841c2
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@

## Input

```javascript
// @flow @validateRefAccessDuringRender @validatePreserveExistingMemoizationGuarantees

import {useRef} from 'react';

component Foo(cond: boolean, cond2: boolean) {
const ref = useRef();

const s = () => {
return ref.current;
};

if (cond) return [s];
else if (cond2) return {s};
else return {s: [s]};
}

export const FIXTURE_ENTRYPOINT = {
fn: Foo,
params: [{cond: false, cond2: false}],
};

```


## Error

```
10 | };
11 |
> 12 | if (cond) return [s];
| ^ InvalidReact: Ref values (the `current` property) may not be accessed during render. (https://react.dev/reference/react/useRef) (12:12)
InvalidReact: Ref values (the `current` property) may not be accessed during render. (https://react.dev/reference/react/useRef) (13:13)
InvalidReact: Ref values (the `current` property) may not be accessed during render. (https://react.dev/reference/react/useRef) (14:14)
13 | else if (cond2) return {s};
14 | else return {s: [s]};
15 | }
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// @flow @validateRefAccessDuringRender @validatePreserveExistingMemoizationGuarantees

import {useRef} from 'react';

component Foo(cond: boolean, cond2: boolean) {
const ref = useRef();

const s = () => {
return ref.current;
};

if (cond) return [s];
else if (cond2) return {s};
else return {s: [s]};
}

export const FIXTURE_ENTRYPOINT = {
fn: Foo,
params: [{cond: false, cond2: false}],
};

0 comments on commit f2841c2

Please sign in to comment.