React: Difference between revisions

From bibbleWiki
Jump to navigation Jump to search
Line 77: Line 77:
==Binding a function==
==Binding a function==
<source>
<source>
this.handleClick = this.handleClick.bind(this);
 
import React from 'react';
import ReactDOM from 'react-dom';
import { Video } from './Video';
import { Menu } from './Menu';
 
const VIDEOS = {
  fast: 'https://s3.amazonaws.com/codecademy-content/courses/React/react_video-fast.mp4',
  slow: 'https://s3.amazonaws.com/codecademy-content/courses/React/react_video-slow.mp4',
  cute: 'https://s3.amazonaws.com/codecademy-content/courses/React/react_video-cute.mp4',
  eek: 'https://s3.amazonaws.com/codecademy-content/courses/React/react_video-eek.mp4'
};


class App extends React.Component {
class App extends React.Component {
   constructor(props) {
   constructor(props) {
    this.chooseVideo = this.chooseVideo.bind(this);
     super(props);
     super(props);
    this.handleClick = this.handleClick.bind(this);
     this.state = {  
     this.state = {  
       src: VIDEOS.fast  
       src: VIDEOS.fast  
     };
     };
   }
   }
 
  chooseView(newView)  {
    this.setState({
      src: VIDEOS[newVideo]
    });
  }
  render() {
   
    return (
      <div>
        <h1>Video Player</h1>
        <Menu chooseVideo={this.chooseView()} />
        <Video src={this.state.src} />
      </div>
    );
  }
}
ReactDOM.render(
  <App />,
  document.getElementById('app')
);
import React from 'react';


export class Menu extends React.Component {
export class Menu extends React.Component {
 
  constructor() {
    super(props)
    this.handleClick = this.handleClick.bind(this);
  }
 
  handleClick(e) {
    var text = e.target.value;
    this.props.chooseView(text);
  }
 
   render() {
   render() {
     return (
     return (
       <form OnClick={this.props.handleClick}>
       <form OnClick={this.handleClick}>
         <input type="radio" name="src" value="fast" /> fast
         <input type="radio" name="src" value="fast" /> fast
         <input type="radio" name="src" value="slow" /> slow
         <input type="radio" name="src" value="slow" /> slow
Line 97: Line 143:
         <input type="radio" name="src" value="eek" /> eek
         <input type="radio" name="src" value="eek" /> eek
       </form>
       </form>
    );
  }
}
import React from 'react';
export class Video extends React.Component {
  render() {
    return (
      <div>
        <video controls autostart autoPlay muted src={this.props.src} />
      </div>
     );
     );
   }
   }
}
}
</source>
</source>

Revision as of 05:24, 26 October 2019

Quick Reference

Variables

 const myVar = (
   <h1>Love it</h1>
 );

Run

Maps

 // Only do this if items have no stable IDs
 
 const todo = ["fix", "syntax", "highlighting"];
 const todoItems = todos.map((todo, index) =>
 <li key={index}>
   {todo.text}
 </li>
);

Component Example

import React, {Component} from 'react';
import ReactDOM from 'react-dom'; 

class Parent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {name: "Frarthur"};
  }
  render() {
    return <div></div>;
  }  
};

Passing Props to child

Parent.json

import React from 'react';
import ReactDOM from 'react-dom';
import { Child } from './Child';

class Parent extends React.Component {
  constructor(props) {
    super(props);
    this.state = { name: 'Frarthur' };
  }

  render() {
    return <Child name={this.state.name} />;
  }
}

ReactDOM.render(<Parent />, document.getElementById('app'));

Child.json

import React from 'react';

export class Child extends React.Component {
  render() {
    return <h1>Hey, my name is {this.props.name}!</h1>;
  }
}

Binding a function

import React from 'react';
import ReactDOM from 'react-dom';
import { Video } from './Video';
import { Menu } from './Menu';

const VIDEOS = {
  fast: 'https://s3.amazonaws.com/codecademy-content/courses/React/react_video-fast.mp4',
  slow: 'https://s3.amazonaws.com/codecademy-content/courses/React/react_video-slow.mp4',
  cute: 'https://s3.amazonaws.com/codecademy-content/courses/React/react_video-cute.mp4',
  eek: 'https://s3.amazonaws.com/codecademy-content/courses/React/react_video-eek.mp4'
};

class App extends React.Component {
  constructor(props) {
    this.chooseVideo = this.chooseVideo.bind(this);
    super(props);
    this.state = { 
      src: VIDEOS.fast 
    };
  }
  
  chooseView(newView)   {
    this.setState({
      src: VIDEOS[newVideo]
    });
  }
  render() {
    
    return (
      <div>
        <h1>Video Player</h1>
        <Menu chooseVideo={this.chooseView()} />
        <Video src={this.state.src} />
      </div>
    );
  }
}

ReactDOM.render(
  <App />, 
  document.getElementById('app')
);

import React from 'react';

export class Menu extends React.Component {
  
  constructor() {
    super(props)
    this.handleClick = this.handleClick.bind(this);
  }
  
  handleClick(e) {
    var text = e.target.value;
    this.props.chooseView(text);
  }
  
  render() {
    return (
      <form OnClick={this.handleClick}>
        <input type="radio" name="src" value="fast" /> fast
        <input type="radio" name="src" value="slow" /> slow
        <input type="radio" name="src" value="cute" /> cute
        <input type="radio" name="src" value="eek" /> eek
      </form>
    );
  }
}

import React from 'react';

export class Video extends React.Component {
  render() {
    return (
      <div>
        <video controls autostart autoPlay muted src={this.props.src} />
      </div>
    );
  }
}