or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

children-utilities.mdcontext-api.mdcore-api.mdimmutability-helpers.mdindex.mdlegacy-apis.mdperformance-tools.mdrefs-system.mdserver-rendering.mdtransition-groups.md

core-api.mddocs/

0

# Core React API

1

2

Primary React compatibility layer providing all essential React APIs including component system, virtual DOM, lifecycle methods, and rendering functions.

3

4

## Capabilities

5

6

### Component System

7

8

Base classes for creating React-compatible components with full lifecycle support.

9

10

```javascript { .api }

11

/**

12

* Base component class with state management and lifecycle methods

13

*/

14

class Component {

15

/**

16

* Component constructor

17

* @param {object} props - Component properties

18

* @param {object} context - Component context

19

*/

20

constructor(props, context);

21

22

/**

23

* Update component state and trigger re-render

24

* @param {object|function} partialState - State updates or updater function

25

* @param {function} callback - Optional callback after state update

26

*/

27

setState(partialState, callback);

28

29

/**

30

* Force component to re-render immediately

31

* @param {function} callback - Optional callback after render

32

*/

33

forceUpdate(callback);

34

35

/**

36

* Render method - must be implemented by subclasses

37

* @returns {VNode} Virtual DOM node

38

*/

39

render();

40

41

// Lifecycle methods

42

componentWillMount();

43

componentDidMount();

44

componentWillReceiveProps(nextProps);

45

shouldComponentUpdate(nextProps, nextState);

46

componentWillUpdate(nextProps, nextState);

47

componentDidUpdate(prevProps, prevState);

48

componentWillUnmount();

49

50

// Instance properties

51

props;

52

state;

53

context;

54

}

55

56

/**

57

* Component with built-in shallow comparison for shouldComponentUpdate

58

*/

59

class PureComponent extends Component {

60

/**

61

* Automatically implements shallow comparison for props and state

62

* @param {object} nextProps - Next props

63

* @param {object} nextState - Next state

64

* @returns {boolean} Whether component should update

65

*/

66

shouldComponentUpdate(nextProps, nextState);

67

}

68

```

69

70

**Usage Examples:**

71

72

```javascript

73

import { Component, PureComponent } from 'preact-compat';

74

75

// Class component with state

76

class Counter extends Component {

77

constructor(props) {

78

super(props);

79

this.state = { count: 0 };

80

}

81

82

increment = () => {

83

this.setState(prevState => ({ count: prevState.count + 1 }));

84

};

85

86

render() {

87

return (

88

<div>

89

<p>Count: {this.state.count}</p>

90

<button onClick={this.increment}>Increment</button>

91

</div>

92

);

93

}

94

}

95

96

// Pure component for performance

97

class DisplayItem extends PureComponent {

98

render() {

99

return <div>{this.props.text}</div>;

100

}

101

}

102

```

103

104

### Element Creation

105

106

Functions for creating and manipulating virtual DOM elements.

107

108

```javascript { .api }

109

/**

110

* Create a virtual DOM element

111

* @param {string|function} type - Element type or component

112

* @param {object} props - Element properties

113

* @param {...any} children - Child elements

114

* @returns {VNode} Virtual DOM node

115

*/

116

function createElement(type, props, ...children);

117

118

/**

119

* Clone an existing element with new props and children

120

* @param {VNode} element - Element to clone

121

* @param {object} props - Additional props to merge

122

* @param {...any} children - New children (replaces existing)

123

* @returns {VNode} Cloned virtual DOM node

124

*/

125

function cloneElement(element, props, ...children);

126

127

/**

128

* Create a factory function for a specific element type

129

* @param {string|function} type - Element type or component

130

* @returns {function} Factory function that creates elements of the specified type

131

*/

132

function createFactory(type);

133

134

/**

135

* Check if an object is a valid React element

136

* @param {any} object - Object to validate

137

* @returns {boolean} True if valid React element

138

*/

139

function isValidElement(object);

140

141

/**

142

* Create a portal for rendering outside the component tree

143

* @param {VNode} vnode - Virtual DOM node to render

144

* @param {Element} container - DOM container to render into

145

* @returns {VNode} Portal component

146

*/

147

function createPortal(vnode, container);

148

```

149

150

**Usage Examples:**

151

152

```javascript

153

import { createElement, cloneElement, createFactory, isValidElement, createPortal } from 'preact-compat';

154

155

// Create elements

156

const element = createElement('div', { className: 'container' }, 'Hello World');

157

const component = createElement(MyComponent, { prop: 'value' });

158

159

// Clone with modifications

160

const cloned = cloneElement(element, { id: 'main' }, 'New Content');

161

162

// Create factory

163

const div = createFactory('div');

164

const divElement = div({ className: 'box' }, 'Content');

165

166

// Create portal (render outside component tree)

167

const modal = createPortal(

168

createElement('div', { className: 'modal' }, 'Modal content'),

169

document.body

170

);

171

172

// Validate elements

173

console.log(isValidElement(element)); // true

174

console.log(isValidElement('string')); // false

175

```

176

177

### Rendering Functions

178

179

Functions for rendering components to the DOM and managing component lifecycle.

180

181

```javascript { .api }

182

/**

183

* Render a component into a DOM container

184

* @param {VNode} vnode - Virtual DOM node to render

185

* @param {Element} parent - DOM container element

186

* @param {Element} merge - Optional element to merge with

187

* @returns {Component} Rendered component instance

188

*/

189

function render(vnode, parent, merge);

190

191

/**

192

* Hydrate server-rendered markup with a component (alias for render)

193

* @param {VNode} vnode - Virtual DOM node to hydrate

194

* @param {Element} parent - DOM container element

195

* @returns {Component} Hydrated component instance

196

*/

197

function hydrate(vnode, parent);

198

199

/**

200

* Find the DOM node for a component instance

201

* @param {Component} component - Component instance

202

* @returns {Element} DOM node

203

*/

204

function findDOMNode(component);

205

206

/**

207

* Unmount and remove a component from a DOM container

208

* @param {Element} container - DOM container element

209

* @returns {boolean} True if component was unmounted

210

*/

211

function unmountComponentAtNode(container);

212

213

/**

214

* Render component into a container with context (unstable API)

215

* @param {VNode} vnode - Virtual DOM node to render

216

* @param {Element} container - DOM container element

217

* @param {function} callback - Render callback

218

* @returns {Component} Rendered component instance

219

*/

220

function unstable_renderSubtreeIntoContainer(parentComponent, vnode, container, callback);

221

222

/**

223

* Batch multiple state updates (no-op in Preact)

224

* @param {function} callback - Function containing state updates

225

*/

226

function unstable_batchedUpdates(callback);

227

```

228

229

**Usage Examples:**

230

231

```javascript

232

import { render, hydrate, findDOMNode, unmountComponentAtNode } from 'preact-compat';

233

234

// Render to DOM

235

const container = document.getElementById('root');

236

const component = render(<App />, container);

237

238

// Hydrate server-rendered content

239

hydrate(<App />, container);

240

241

// Find DOM node

242

const domNode = findDOMNode(component);

243

244

// Unmount component

245

unmountComponentAtNode(container);

246

```

247

248

### Version Constant

249

250

```javascript { .api }

251

/**

252

* React version string for library compatibility

253

* @type {string}

254

*/

255

const version = '15.1.0';

256

```

257

258

**Usage:**

259

260

```javascript

261

import { version } from 'preact-compat';

262

console.log(version); // '15.1.0'

263

```

264

265

### Internal/Advanced Utilities

266

267

```javascript { .api }

268

/**

269

* Object extension utility (alias for extend function)

270

* @param {object} base - Base object to extend

271

* @param {...object} props - Objects to merge into base

272

* @returns {object} Extended object

273

*/

274

const __spread;

275

```

276

277

**Usage:**

278

279

```javascript

280

import { __spread } from 'preact-compat';

281

282

const obj1 = { a: 1, b: 2 };

283

const obj2 = { c: 3 };

284

const extended = __spread(obj1, obj2); // { a: 1, b: 2, c: 3 }

285

```

286

287

## Types

288

289

```javascript { .api }

290

interface ComponentLifecycle<P, S> {

291

componentWillMount?(): void;

292

componentDidMount?(): void;

293

componentWillReceiveProps?(nextProps: P, nextContext: any): void;

294

shouldComponentUpdate?(nextProps: P, nextState: S, nextContext: any): boolean;

295

componentWillUpdate?(nextProps: P, nextState: S, nextContext: any): void;

296

componentDidUpdate?(prevProps: P, prevState: S, prevContext: any): void;

297

componentWillUnmount?(): void;

298

}

299

300

interface ComponentConstructor<P = {}, S = {}> {

301

new (props: P, context?: any): Component<P, S>;

302

}

303

304

type StatelessComponent<P = {}> = (props: P, context?: any) => VNode<any>;

305

306

type ComponentType<P = {}> = ComponentConstructor<P> | StatelessComponent<P>;

307

```