Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3.  
  4. class SelectOrType extends React.Component {
  5. state = {
  6. select: '',
  7. input: '',
  8. text: 'inne',
  9. display: false,
  10. }
  11.  
  12. handleChangeSelect = (e) => {
  13. this.setState({
  14. select: e.target.value,
  15. display: e.target.value === 'other' ? true : false,
  16. });
  17. }
  18.  
  19. handleChangeInput = (e) => {
  20. this.setState({
  21. input: e.target.value,
  22. });
  23. }
  24.  
  25. handleClick = (e) => {
  26. this.setState({
  27. text: this.state.input,
  28. display: false,
  29. })
  30. }
  31.  
  32. render() {
  33.  
  34. const options = this.props.items.map( (i) => {
  35. return <option value={ i }>{i}</option>
  36. });
  37.  
  38. const style = {
  39. display: this.state.display ? 'block' : 'none',
  40. }
  41.  
  42. return (
  43. <div>
  44. <select onChange={this.handleChangeSelect} value={ this.state.select }>
  45. {options}
  46. <option value="other">{this.state.text}</option>
  47. </select>
  48. <div style={style}>
  49. <input value={this.state.input} onChange={this.handleChangeInput} />
  50. <button onClick={this.handleClick}>save</button>
  51. </div>
  52. </div>
  53. )
  54. }
  55. }
  56.  
  57. class App extends React.Component {
  58. render() {
  59. return <SelectOrType items={ ['BMW', 'Jaguar', 'Porshe'] } />
  60. }
  61. }
  62.  
  63. document.addEventListener('DOMContentLoaded', function(){
  64. ReactDOM.render(
  65. <App/>,
  66. document.getElementById('app')
  67. );
  68. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement