February 9, 2026
Slides: slides.com/joelross/info340wi26-react-intro
React uses React.createElement() to create DOM elements:
const msgElem = React.createElement('h1',
{ id: 'hello', className: 'myClass' },
'Hello World!');
JSX is shorthand syntax that transpiles to React.createElement() calls:
const msgElem = <h1 id="hello" className="myclass">Hello World</h1>;
className instead of class (reserved keyword in JavaScript)<img />, <input />{variable}<>...</>{/* comment */}npm run devComponents are functions that return DOM elements:
function HelloMessage(props) {
return <h1>Hello World!</h1>;
}
<HelloMessage />, never call HelloMessage()props parameter for inputProps are input parameters passed to components:
const msg = <MessageItem message="Hello" />;
function MessageItem(props) {
return <li>{props.message.toUpperCase()}</li>;
}
message="Hello"count={42}Build complex UIs by nesting components and mapping arrays:
function MessageList(props) {
const msgComponents = props.messages.map((msgStr) => (
<MessageItem message={msgStr} key={msgStr} />
));
return <ul>{msgComponents}</ul>;
}
.map() to create components from arrayskey prop (React requirement)Components defined in separate files and imported:
// Messages.js
export function HelloMessage(props) {
return <h1>Hello World</h1>;
}
// App.js
import { HelloMessage } from './Messages.js';
export default function App(props) {
return <HelloMessage />;
}
export function ComponentName() {}export default function App() {}import { ComponentName } from './file.js'React.createElement()