PostAd.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React ,{useState, useRef} from "react";
  2. import { connect } from "react-redux";
  3. import { actionPostAd } from "../actions";
  4. import { Container } from "react-bootstrap";
  5. import {useDropzone} from 'react-dropzone'
  6. import { Redirect ,useHistory} from "react-router";
  7. const Post = ({onPost}) => {
  8. let history = useHistory()
  9. let [title,setTitle] = useState('')
  10. let [description,setDescription] = useState('')
  11. let [price,setPrice] = useState(0)
  12. const loading = useRef()
  13. const {acceptedFiles, getRootProps, getInputProps} = useDropzone();
  14. if(acceptedFiles.length > 0 && !loading.current) {
  15. loading.current = true
  16. }
  17. const files = acceptedFiles.map(file => (
  18. <li key={file.name}>
  19. {file.name}
  20. </li>
  21. ));
  22. return (
  23. <Container >
  24. <div className='d-flex flex-column align-items-start post'>
  25. <label>Введите название</label>
  26. <input value={title} onChange={e => setTitle(e.target.value)} placeholder='Например,Iphone 8'></input>
  27. </div>
  28. <div className='post'>
  29. <div {...getRootProps({className: 'dropzone'})}>
  30. <input {...getInputProps() }/>
  31. <p>Фото, нажмите для добавления. Первое фото будет на обложке объявления</p>
  32. </div>
  33. <aside>
  34. <h5>Фото: </h5>
  35. <ul>{files}</ul>
  36. </aside>
  37. </div>
  38. <div className='d-flex flex-column align-items-start post'>
  39. <label>Описание</label>
  40. <textarea rows="5" cols="75" value={description} onChange={e => setDescription(e.target.value)} placeholder='Подумайте,какие подробности вы бы хотели узнать из объявления. И добавьте их в описание'></textarea>
  41. </div>
  42. <div className='d-flex flex-column align-items-start post'>
  43. <label>Введите цену</label>
  44. <input type={"number"} value={price} onChange={e => e.target.value>=0 ? setPrice(+e.target.value) : ""} placeholder='Цена' ></input>
  45. </div>
  46. <div className="d-flex flex-column align-items-end post">
  47. <button onClick={()=> onPost(title,description,price,acceptedFiles) && history.push('/')}>Опубликовать</button>
  48. </div>
  49. </Container>
  50. )
  51. }
  52. const CPost = connect(null,{onPost: actionPostAd})(Post)
  53. export default CPost