javascript 如何使组件在更改状态并按下按钮后重新渲染

dbf7pr2w  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(128)

我是新的React,我正在开发一个组件,使用一个DatePicker和选定的日期,它呈现包含一些图表的页面。
我这里的问题是,每次我通过在DatePicker中选择一个新日期来更改startDate变量时。我想要的行为是:
1.从日期选择器中选择日期
1.按下“更新 Jmeter 板”按钮
1.重新渲染所有组件
即,等待按钮被按下以重新呈现所有组件。
有人能告诉我如何才能实现这种行为吗?

import React, { useState, useEffect } from "react";
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
 
// CSS Modules, react-datepicker-cssmodules.css// 
import 'react-datepicker/dist/react-datepicker-cssmodules.css';
import Spinner from '../../components/layout/Spinner';


//Cards Paginas
import Pagina1 from '../../components/tableros/Cards/Pagina1';
import Pagina2 from '../../components/tableros/Cards/Pagina2';
import Pagina3 from '../../components/tableros/Cards/Pagina3';
import Pagina4 from '../../components/tableros/Cards/Pagina4';
import Pagina5 from '../../components/tableros/Cards/Pagina5';
import Pagina6 from '../../components/tableros/Cards/Pagina6';

const ReporteDiario = () => {

  
  const [startDate, setStartDate] = useState(new Date());
  const [renderPages, setRenderPages] = useState(true);

  const handleClick = () => {
    setRenderPages(!renderPages);
  }

  // Para poder actualizar los componentes cada que se cambie la fecha
  useEffect(() => {
  }, [renderPages]);

  function PagesComponent() {
    return (
      <div className="cards-container">
        <Pagina1 
          date={startDate} />
        <Pagina2  />
        <Pagina3  />
        <Pagina4  />
        <Pagina5 />
        <Pagina6 />
      </div>
    );
  }
  return (
    <>
    <aside className='col-span-2 border-2 border-blue-600'>
        <div className="form-group">  
        <DatePicker
          selected={startDate}
          showIcon
          onChange={(date) => setStartDate(date)}
          isClearable
          dateFormat="yyyy-MM-dd"
          placeholderText="Select date"
          closeOnScroll={true}
        />
        </div>  
    </aside>

    

    <div>
    <button id='ReporteDiario' onClick={handleClick} className='text-left pl-1 my-1 border-2 border-blue-600'>
       Update Dashboard
    </button>
    {renderPages && <PagesComponent/>}
    </div>

    </>
  )
}

export default ReporteDiario

我一直在研究如何使用钩子,比如useEffect,useRef,但目前我还不能处理这个问题。

djmepvbi

djmepvbi1#

大卫,你可以在react中使用Refs。你可以这样做,更新ref,然后按下按钮,从ref更新状态。
希望这对你有帮助:)

相关问题