Skip to content

Commit 03c83c9

Browse files
committed
JS: model React's getDerivedStateFromError
1 parent 53576a4 commit 03c83c9

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

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)