Skip to content

Commit 62859d1

Browse files
authored
Merge pull request #2394 from esbena/js/support-getDerivedFromError
Approved by max-schaefer
2 parents 2c62337 + edb94db commit 62859d1

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

change-notes/1.24/analysis-javascript.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## General improvements
44

5+
* Support for the following frameworks and libraries has been improved:
6+
- [react](https://www.npmjs.com/package/react)
57

68
## New queries
79

javascript/ql/src/semmle/javascript/frameworks/React.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,12 @@ abstract class ReactComponent extends ASTNode {
136136
result = arg0
137137
)
138138
or
139-
result.flowsToExpr(getStaticMethod("getDerivedStateFromProps").getAReturnedExpr())
139+
exists(string staticMember |
140+
staticMember = "getDerivedStateFromProps" or
141+
staticMember = "getDerivedStateFromError"
142+
|
143+
result.flowsToExpr(getStaticMethod(staticMember).getAReturnedExpr())
144+
)
140145
or
141146
// shouldComponentUpdate: (nextProps, nextState)
142147
result = DataFlow::parameterNode(getInstanceMethod("shouldComponentUpdate").getParameter(1))
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import React from "react"
2+
3+
class C extends React.Component {
4+
static getDerivedStateFromError(error) {
5+
return { error }
6+
}
7+
8+
render() {
9+
this.state.error;
10+
}
11+
}
12+

0 commit comments

Comments
 (0)