onBeforeGetContent 不使用 react-to-print 呈现

问题描述

我使用 react-to-print,但遇到了问题。执行 onBeforeGetContent 时不要更新此组件。我的 var num 从不取值,但在控制台中显示“是”和 API 收到的数字。 我需要打印一张带有类型和编号的票。 这是我的代码。 PD:我是 React 新手。

export default function AdmisionComponent() {
  const classes = useStyles();
  const [num,setNum] = useState("");
  
  const componentRef = useRef();
  const handlePrint = useReactToPrint({
    //onBeforePrint: () => promise(),onBeforeGetContent: () => promise(),content: () => componentRef.current,});
  
 const promise = () =>{ new Promise((resolve,reject) => {
  console.log('init');
  axios.post("/admision").then(response =>{
    setNum(response.data);
    console.log(response.data);
    resolve(console.log("yes"));
  }).catch(response =>{
    reject(console.log("no"));
  });
})


  const createT = () =>{
    axios.post("/admision").then(response =>{
      setNum(response.data);
      console.log(response.data);
    }).catch(null);
  }};


  return (
    <div className={classes.root}>
      <div className={classes.p}>
          <Print ref={componentRef} typeT= {"A"} num={num}/>
        </div>
      <Link to= "/">
        <ButtonBase
          focusRipple
          key="Admision"
          className={classes.image}
          onClick={handlePrint}
          //onClick={() => createT()}
          focusVisibleClassName={classes.focusVisible}
        >
          <span
            className={classes.imageSrc}
            style={{
              backgroundImage: `url(${boton_tramites})`,}}
          />
          <span className={classes.imageButton}>
            <Typography
              component="span"
              variant="subtitle1"
              color="inherit"
              className={classes.imageTitle}
            >
              ADMISIÓN
              <span className={classes.imageMarked} />
            </Typography>
          </span>
        </ButtonBase>
        </Link>
    </div>
  );
}

onBeforePrint 和 onBeforeGetContent 运行 promise 并更改状态,但不呈现 Print 组件。就我而言,我认为我应该使用 onBeforeGetContent。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)