# React for Beginners * Video course: https://reactforbeginners.com/account ## Video 1: Tooling * create-react-app * use Webpack * Sublime editor * React dev tools ## Video 2: Thinking and Understanding React Components * React applications are split into components which share information over different ways like state and properties. ## Video 3: Our First React Component * Write first component ```javascript // MyComponent.js import React from 'react' class MyClass extends React.Component { render ( return(
) ) } export default MyClass ``` * Render it on the HTML ```javascript // index.js import React from 'react' import { render } from 'react-dom' import MyComponent from './MyComponent' render(, document.getElementById('main')) ``` ## Video 4: Write HTML with JSX * You can write HTML code directly in return functions within parentheses. * Wes blog post about how to use emmet in babel * need to replace class tags with className, because class is sth different in JS * Can only return one parent element (need to wrap the children) * HTML comments have to be inside {/**/} in JSX *AND* inside parent element. ## Video 5: CSS * Can be in HTML head * Can also be included with ```javascript import './style.css' ``` * Processed by Webpack ## Video 6: Create Application Layout with Components * decide how to organize the app with sub-components ## Video 7: Passing Dynamic Data with props * add attributes to components ```javascript ``` * access variables via props ```javascript class MyComponent extends React.Component { render( return(

{this.props.myProp}

{this.props.myObj}

{this.props.onClick}

) ) } ``` ## Video 8: Stateless Functional Components * If component has just a return function, you can use a stateless functional component * replace class MyClass ... with ```javascript const MyFunction = (props) => { return(

{props.myProp}

{props.myObj}

{props.onClick}

) } ``` ## Video 9: Routing with React Router * Don't render component directly, but router ```javascript // index.js import { BrowserRouter, Match, Miss } from 'react-router' const Root = () => { return ( ) } render(, document.getElementById('main')) ``` ## Video 10: Helper and Utility Functions * Organize helper functions in separate files. ## Video 11: Working with React Events * Works as regular JS events, but adds cross-browser compatibility * Think about what event to handle * Think about, at what level the event should be handeled and pass the function down to the component via props. * Reference form elements as follows: ```javascript { this.whateverName = input }} ``` * now you can access it through 'this'. * You have to bind 'this' in functions other than render * See this example with event handling: ```javascript class MyClass extends React.Component { constructor () { super() this.myFunction = this.myFunction.bind('this') } myFunction (event) { this.nowAvailable('!!!') event.preventDefault() } render () { return (

test

{this.myFunction(e)}}>test

or

test

Needs constructor hack ) } } ```