React Components

function Profile (props) {
  const [userData, setUserData] = useState(data) 

  return(
    <Header>
      <Profile
        name={userData.name}
        interests={userData.interests}
        description={userData.description}
      />
      <Activity />
      <Contact />
    </Header>
  )
}

Using Components

Using Arrays of Components

function ProfileList (props) {
  return(
    <Header>
      [
        <Profile userId="One"/>,
        <Profile userId="Two"/>,
        <Profile userId="Three"/>
      ]
    </Header>
  )
}

Building components with Iteration

function Comment (props) {
  return (
    <li>
      <p>User: {props.user}</p>
      <p>Comment: {props.content}</p>
    </li>
  ) 
}

function CommentList (props) {

  const comments = [
    { user: 'Joshua', content: 'Components are my fave!' },
    { user: 'Ada', content: 'Yes they make life easy' },
    { user: 'Alex', content: 'Loved them for years' }
  ];

  const commentComponents = comments.map((comment, index) => {
    return <Comment user={ comment.user } content={ comment.content }/>
  });

  return (
    <div className="comments">
      <h2>Comment List</h2>
      <ul>
        { commentComponents }
      </ul>
    </div>
  )
}

Immutable Components

function Tick(props) {
  [date, setDate] = useState(new Date().toLocaleTimeString())

  useEffect(() => {
    setTimeout(() => {
      setDate(new Date().toLocaleTimeString())
    }, 1000)
  })

  return (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {date}.</h2>
    </div>
  )
}

Ticking Clock Live

See the Pen React Clock Example by Joshua Burke (@Dangeranger) on CodePen.

https://codepen.io/Dangeranger/pen/gjdNEB

Granular Render Updates

render performance

Component Lifecycle

Mounting

Updating

Unmounting

Errors

Lifecycle Methods Diagram

react-component-lifecycle

http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/

 Previous Next 

Outline

[menu]

/