Skip to content

Commit 119dab6

Browse files
committed
Add support for React 18
1 parent 074398b commit 119dab6

File tree

2 files changed

+35
-12
lines changed

2 files changed

+35
-12
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@
5454
"microbundle": "^0.15.0"
5555
},
5656
"peerDependencies": {
57-
"react": "^17.0.2",
58-
"react-dom": "^17.0.2",
57+
"react": "^17.0.2 || ^18",
58+
"react-dom": "^17.0.2 || ^18",
5959
"react-modal": "^3.15.1"
6060
}
6161
}

src/renderer.js

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,16 @@ export function FormInstance(config) {
5050
this.onChange = this.onChange.bind(this);
5151

5252
this.render = function() {
53+
if (ReactDOM.hasOwnProperty('createRoot'))
54+
this._renderReact18();
55+
else
56+
this._renderReact17();
57+
};
58+
59+
this._renderReact17 = function() {
5360
try {
5461
ReactDOM.render(
55-
<FormContainer
56-
schema={this.schema}
57-
dataInputId={this.dataInputId}
58-
data={this.data}
59-
errorMap={this.errorMap}
60-
fileHandler={this.fileHandler}
61-
fileHandlerArgs={this.fileHandlerArgs}
62-
onChange={this.onChange}
63-
readonly={this.readonly}
64-
/>,
62+
this._getFormContainerComponent(),
6563
document.getElementById(this.containerId)
6664
);
6765
} catch (error) {
@@ -72,6 +70,31 @@ export function FormInstance(config) {
7270
}
7371
};
7472

73+
this._renderReact18 = function() {
74+
const root = ReactDOM.createRoot(document.getElementById(this.containerId));
75+
76+
try {
77+
root.render(this._getFormContainerComponent());
78+
} catch (error) {
79+
root.render(<ErrorReporter error={error} />);
80+
}
81+
};
82+
83+
this._getFormContainerComponent = function() {
84+
return (
85+
<FormContainer
86+
schema={this.schema}
87+
dataInputId={this.dataInputId}
88+
data={this.data}
89+
errorMap={this.errorMap}
90+
fileHandler={this.fileHandler}
91+
fileHandlerArgs={this.fileHandlerArgs}
92+
onChange={this.onChange}
93+
readonly={this.readonly}
94+
/>
95+
);
96+
};
97+
7598
this.update = function(config) {
7699
this.schema = config.schema || this.schema;
77100
this.data = config.data || this.data;

0 commit comments

Comments
 (0)