最近在开发Logo 生成器 Logo Dash应用时,遇到了一个有趣的问题:将 ReactDOM 渲染你相关的代码改成使用 React 18 的 API 之后,PNG图片导出功能突然失效了。经过排查,发现这与React 18的异步渲染特性有关。今天就来分享一下这个问题的来龙去脉和解决方案。
LogoDash 功能简介
LogoDash 是我最近开发的一个Logo制作工具,主打一键生成极简Logo。用户既可以从图标库(目前支持 Font Awesome 和 Lucide图标)中自定义(图标、配色、文字、渐变等细节),也可以通过「随机生成」,刷出极简渐变风Logo。它能够帮助专为创业者、独立开发者快速生成简洁美观的图标,加速产品上线过程。
在Logo Dash 应用中,用户可以将设计好的 Logo 导出为PNG格式或者 SVG 格式。而最近有一次代码提交,却导致了 PNG 导出功能失效。今天就来分享一下我解决这个问题的历程。
问题背景
在 LogoDash 的 PNG 导出功能中,需要通过这样一段逻辑获取图标的 svg 代码,然后再在 canvas 中绘制
typescript// 原来的代码 - 被React 18标记为过时import ReactDOM from "react-dom";const tempContainer = document.createElement('div');ReactDOM.render(iconElement, tempContainer); // 控制台警告在这里!const svgElement = tempContainer.querySelector("svg")
