Skip to content

Instantly share code, notes, and snippets.

@infernalmaster
Last active November 24, 2018 09:21
Show Gist options
  • Select an option

  • Save infernalmaster/8d389d21e1d0fdd4530dd338fcb737d2 to your computer and use it in GitHub Desktop.

Select an option

Save infernalmaster/8d389d21e1d0fdd4530dd338fcb737d2 to your computer and use it in GitHub Desktop.
React patterns

Можна пошукати приклади тут https://devhints.io/react. Але найтиповіші задачі

  1. створити компонент
import React from 'react'


export default class Hello extends React.Component {
  state = {text: 'Hello'}
  render () {
    return <div className='message-box'>
      {this.state.text} {this.props.name}
    </div>
  }
}
  1. Викликати компонент
<Hello name="Ivan" />
  1. Компонент, що рендерить список
import React from 'react'

export default class List extends React.Component {
  state = {
    array: [
      {id: 1, value: 'X'},
      {id: 2, value: 'Y'}
    ]
  }
  
  render () {
    return <div>
      {this.state.array.map(el => (
        <div key={el.id}>{el.value}</div>
      ))}
    </div>
  }
}
  1. Компонент з обробником кліку
import React from 'react'

export default class Counter extends React.Component {
  state = {
    value: 0
  }
  
  handleClick = (event) => {
    this.setState({value: this.state.value + 1})
  }
  
  render () {
    return <div>
      {this.state.value}
      
      <button onClick={this.handleClick}>add one</button>
    </div>
  }
}
  1. Компонент з текстовим полем
import React from 'react'

export default class TextInput extends React.Component {
  state = {
    text: ''
  }
  
  handleChange = (event) => {
    this.setState({text: event.target.value})
  }
  
  render () {
    return <div>
      Text is: {this.state.text}
  
      <br/>
  
      <input
        type='text' 
        value={this.state.text}
        onChange={this.handleChange}
       />
    </div>
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment