Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我能通过吗;“尚未创建状态”;作为setState挂钩内组件中的支柱?_Javascript_Reactjs_Setstate - Fatal编程技术网

Javascript 我能通过吗;“尚未创建状态”;作为setState挂钩内组件中的支柱?

Javascript 我能通过吗;“尚未创建状态”;作为setState挂钩内组件中的支柱?,javascript,reactjs,setstate,Javascript,Reactjs,Setstate,父组件: export default function GeneralModal({ modalOpen, setModalOpen, type, idLocation, }) { const materialClasses = useStyles(); const [open, setOpen] = useState(false); const [title, setTitle] = useState('') const [loading, setLoadi

父组件:

export default function GeneralModal({
  modalOpen,
  setModalOpen,
  type,
  idLocation,
}) {

  const materialClasses = useStyles();
  const [open, setOpen] = useState(false);
  const [title, setTitle] = useState('')
  const [loading, setLoading] = useState(false)
  const [modalType, setModalType] = useState()
  const [idBooking, setIdBooking] = useState('')
  const [modalDetails, setModalDetails] = useState({})
  const [isConfirmationModalOpen, setIsConfirmationModalOpen] = useState(false)

  useEffect(()=> {
    setModalType(type)
    setTitle(type)
  }, [type])

  const handleClose = () => {
    setOpen(false);
    setModalOpen ? setModalOpen(false) : null
  };

  useEffect(()=> {
    switch(modalType) {
      case 'bookingDetails':
        setModalDetails({
          body: <BookingDetailsBody
                  idLocation={idLocation}
                  setModalDetails={setModalDetails}
                  modalDetails={modalDetails}
                  setModalType={setModalType}
                  setIdBooking={setIdBooking}
                  loading={loading}
                  setLoading={setLoading}
                  setTitle={setTitle}
                />,
          title: '',
          classe: materialClasses.bookingModalContainer,
          header: true
        })
        break;
      case 'addBooking':
      case 'editBooking':
        setModalDetails({
          body: <BookingFormBody
                  type={modalType === 'editBooking' ? modalType :  type}
                  setIsConfirmationModalOpen={setIsConfirmationModalOpen}
                  idLocation={idLocation}
                  close={handleClose}
                  loading={loading}
                  setLoading={setLoading}
                  setModalType={setModalType}
                />,
          title: modalType === 'editBooking' ? 'MODIFIER LOCATION' : 'NOUVELLE LOCATION',
          classe: materialClasses.bookingModalContainer,
          header: true
        })
        break;
      case 'confirmationModal':
        setModalDetails({
          body: <ConfirmationModalBody />,
          title: '',
          classe:  materialClasses.confirmationModalContainer,
          header: false
        })
        break;
      default: ''
    }
  }, [modalType])
const BookingDetailsBody = ({idLocation, setIdBooking, setLoading, modalDetails, setModalDetails, setTitle}) => {

    const [data, setData] = useState({
        secondaryDrivers: [],
        optionsWithNoDuplicates :[],
    })
    const [bookingDetails, setBookingDetails] = useState('')
 
    useEffect( () => {

        setLoading(true)
        
                
                setIdBooking(data.data.external_booking.id)
                console.log(modalDetails) // empty object {}
                setModalDetails({
                ...modalDetails,
                title: 'LOCATION EXTERNE'
                 })
                setTitle('Location externe')
                setBookingDetails(data)
                setLoading(false)
         
    }, [] )
在子组件中,我想通过作为道具传递的“setModalDetails”更新我的
modalDetails
对象的标题键,但由于我正在分解空的modalDetails,这会使我的应用程序崩溃。 找不到只能从子组件更改我的标题键的解决方法。 我找到的唯一解决方案是使用与新挂钩相关的标题道具,但我宁愿将所有信息保留在我的
modalDetail
hook中,以获得清晰的代码。 有什么想法吗