EditAd.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import React ,{useState,useEffect} from "react";
  2. import { connect } from "react-redux";
  3. import { actionPostAd, actionTypeAdOne } from "../actions";
  4. import { Container } from "react-bootstrap";
  5. import CPromiseComponent from "../Components/PromiseComponent";
  6. import { Redirect } from "react-router";
  7. const Post = ({data,onChange,match:{params:{id}},getData, posted}) => {
  8. let [title,setTitle] = useState('')
  9. let [description,setDescription] = useState('')
  10. let [price,setPrice] = useState(0)
  11. useEffect(()=>{
  12. setTitle(data?.title)
  13. setDescription(data?.description)
  14. setPrice(data?.price)
  15. },[data])
  16. useEffect(() =>
  17. getData(id),[id]
  18. )
  19. return (
  20. <>
  21. <CPromiseComponent promiseName='AdFindOne'>
  22. <Container >
  23. <div className='d-flex flex-column align-items-start post'>
  24. <label>Введите название</label>
  25. <input value={title} onChange={e => setTitle(e.target.value)} ></input>
  26. </div>
  27. <div className='d-flex flex-column align-items-start post'>
  28. <label>Описание</label>
  29. <textarea rows="5" cols="75" value={description} onChange={e => setDescription(e.target.value)} ></textarea>
  30. </div>
  31. <div className='d-flex flex-column align-items-start post'>
  32. <label>Введите цену</label>
  33. <input type={"number"} value={price} onChange={e => e.target.value>=0 ? setPrice(+e.target.value) : ""} ></input>
  34. </div>
  35. <div className="d-flex flex-column align-items-end post">
  36. <button onClick={()=> onChange(title,description,price,data._id)}>Изменить объявление</button>
  37. </div>
  38. </Container>
  39. </CPromiseComponent>
  40. {posted && <Redirect push to ='/profile'/>}
  41. </>
  42. )
  43. }
  44. const CChange = connect(state => ({data: state.promiseReducer.AdFindOne?.payload?.data?.AdFindOne, posted: state.promiseReducer.PostAd?.payload?.data?.AdUpsert}),{onChange: actionPostAd, getData: actionTypeAdOne})(Post)
  45. export default CChange