NervJS / taro

开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/
https://docs.taro.zone/
Other
35.32k stars 4.77k forks source link

app.tsx 条件判断返回null会报错找不到页面实例 #15506

Open xian107 opened 4 months ago

xian107 commented 4 months ago

相关平台

微信小程序

小程序基础库: H5 使用框架: React

复现步骤

`import { Provider } from "react-redux"; import intl from "react-intl-universal"; import Taro from "@tarojs/taro"; import { useEffect, useState } from "react"; import { store } from "./store";

function App({ children }: any): any { const [localeDone, setLocaleDone] = useState(false); useEffect(() => { Taro.request({ url: "get url api", // 异步获取json文件 success(res: any = {}) { if (res.statusCode === 200 && res.url) { Taro.request({ url: res.url, success(result: any = {}) { console.log("返回json", result.data); if (result.statusCode === 200 && result.data) { intl .init({ currentLocale: "en-US", locales: { "en-US": result.data.EN, "zh-CN": result.data.CH, }, }) .then(() => { setLocaleDone(true); }); } }, }); } }, }); }, []); return {localeDone ? children : null}; } export default App;` image

image

期望结果

app.tsx 可以返回null,或者当state变化时children可以重渲染

实际结果

没有找到页面实例

miSunLaughing commented 1 month ago

这个BUG直接阻塞影响消息推送类的场景需求,这种场景一上来就需要条件判断然后决定是否渲染children,直接原地爆炸