【前端】taro 启动文件app.ts 修改成app.tsx

简介: 【前端】taro 启动文件app.ts 修改成app.tsx

先说下为啥会有这一篇?我们知道tsx 其实就是 typescript xml ,即能支持写诸如<View/><Text/><div/>等标签的脚本。


但使用 taro init 初始化的工程,入口文件不是tsx,而是ts。这意味着,我不能在里面写标签,更意味着我不能写一个全局Context(不熟悉的可以先科普一下:react context),让所有的页面(比如tabbar)都能用到。


原因很简单:Context的数据流也是自上而下的,没有一个顶层的Context把所有的子组件包住,这些子组件就没法公用同一个Context。


如果在 ts 中写标签会出现如下的错误:


image.png


而Context 在react中使用的时候也是以标签的形式出现的,这意味着我想用一个在顶层的全局Context,就必须要把 app.ts 改成 app.tsx



修改一


直接将app.ts 改成 app.tsx

结果如下:

image.png

app.ts 改成 app.tsx 后,报错已经消失,并且微信开发者工具也能正常调试代码。

但问题没有这么简单,因为:我们的react-native端,会出现白屏:

image.png




修改二


app.ts 改成 app.tsx后,把里面的View 这种有实际意义的标签给去了,只保留<ContextAuth.Provider> 这种没有实际意义,只为了提供全局Context的标签。


import React, {Component, PropsWithChildren, useContext, useState} from 'react'
import './app.scss'
import {ContextAuth} from "./register-center/context-app/auth/context-auth";
import Taro from '@tarojs/taro'
import {View} from "@tarojs/components";
export default function App(props) {
  // const {} = props
  const contextAuth = useContext(ContextAuth)
  const [auth, setAuth] = useState({...contextAuth[0]})//权限控制
  return <ContextAuth.Provider value={[auth, setAuth]}>{props.children}</ContextAuth.Provider>
}

image.png

image.png


可以看到,改完后,react-native端恢复正常。


至于为啥react-native端在app.tsx中包含View时会出现异常,我就没做深入研究了,感兴趣的朋友,可以交流一波。这次的试验的结果是:app.tsx中允许出现Context标签但不能包含有实际意义的标签





目录
相关文章
|
4月前
|
前端开发 JavaScript Java
前端限制打包文件数量
前端限制打包文件数量
186 65
|
4月前
|
前端开发
前端引入字体文件
文章介绍了如何在前端项目中引入字体文件,并展示了具体的HTML和CSS代码示例,包括如何使用`@font-face`规则来定义字体和在页面中应用自定义字体。
92 1
前端引入字体文件
|
3月前
|
移动开发 开发框架 小程序
uni-app:demo&媒体文件&配置全局的变量(三)
uni-app 是一个使用 Vue.js 构建多平台应用的框架,支持微信小程序、支付宝小程序、H5 和 App 等平台。本文档介绍了 uni-app 的基本用法,包括登录示例、媒体文件处理、全局变量配置和 Vuex 状态管理的实现。通过这些示例,开发者可以快速上手并高效开发多平台应用。
109 0
|
3月前
|
Linux 开发工具 数据安全/隐私保护
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
这篇文章介绍了在CentOS 7系统中安装Docker时遇到的两个常见问题及其解决方法:用户不在sudoers文件中导致权限不足,以及yum被锁定的问题。
52 2
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
|
4月前
|
前端开发 JavaScript API
前端JS读取文件内容并展示到页面上
前端JavaScript使用FileReader API读取文件内容,支持文本类型文件。在文件读取成功后,可以通过onload事件处理函数获取文件内容,然后展示到页面上。
128 2
前端JS读取文件内容并展示到页面上
|
4月前
|
前端开发
前端diff文件对比使用worker进行优化
如何使用Web Worker在React项目中优化文件对比差异功能的实现。
51 5
|
3月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
215 0
|
3月前
|
前端开发 JavaScript API
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
249 0
|
5月前
|
JSON Linux 网络安全
【Azure 应用服务】如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?
【Azure 应用服务】如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?
|
5月前
|
API 网络架构
【Azure Logic App】在中国区的微软云服务上,使用逻辑应用是否可以下载SharePoint上的文件呢?
【Azure Logic App】在中国区的微软云服务上,使用逻辑应用是否可以下载SharePoint上的文件呢?
【Azure Logic App】在中国区的微软云服务上,使用逻辑应用是否可以下载SharePoint上的文件呢?

热门文章

最新文章