首页 > 其他分享 >关于ts类型声明的一些思考

关于ts类型声明的一些思考

时间:2023-04-18 18:46:40浏览次数:36  
标签:return 声明 route ts React 思考 import Home navigation

当我试图将一些props的参数传递给子组件时,父组件提示我缺少了必要的参数,我才发现是因为我使用了Navigation插件,该插件会代替我隐式传递navigation、route等参数

import React from 'react';
import { NavigationContainer, TabNavigationState, RouteProp } from '@react-navigation/native'
import Home from '../pages/Home';
class BottomTabs extends React.Component<IProps> {
    render() {
        return (
            <NavigationContainer>
                <Tab.Navigator>
                    <Tab.Screen name="Home" component={Home}  options={{tabBarLabel: '首页', headerTitle: '首页'}}></Tab.Screen>
                    <Tab.Screen name="Account" component={Account}  options={{tabBarLabel: '账号'}}></Tab.Screen>
                </Tab.Navigator>
            </NavigationContainer>
        );
    }
}
export default BottomTabs;

因此我必须在子组件的IProps声明中使用“?.”表明navigation、route这两个参数不是必须的

import { createStackNavigator, StackNavigationProp } from '@react-navigation/stack';
type RootStackNavigation = StackNavigationProp<RootStackParamList>
interface IProps {
    navigation?: RootStackNavigation;
    route?: Route;
}
class Home extends React.Component<IProps> {
    render() {
        return (
            <View>
                <Text>ddd</Text>
            </View>
        );
    }
}
export default Home;

而因为navigation、route不是必传的,所以当我使用这两个参数时,我必须先对他们进行判空,否则ts会一直提示该值可能是undefined的,从而规避不必要的空指针异常

function getHeaderTitle(route: Route) {
    const routeName = route.state ? route.state.routes[route.state.index].name : route.params?.screen
    return routeName
}
class Home extends React.Component<IProps> {
    componentDidMount(): void {
        const { navigation, route } = this.props;
        navigation?.setOptions({
            headerTitle: route ? getHeaderTitle(route) : 'xxxx'
        })
    }
    render() {
        return (
            <View>
                <Text>ddd</Text>
            </View>
        );
    }
}
export default Home;

 

标签:return,声明,route,ts,React,思考,import,Home,navigation
From: https://www.cnblogs.com/jiangxiaoxi/p/17330702.html

相关文章

  • react+ts+hook封装一个table分页组件(建议收藏,直接使用)
    前言大家好我是歌谣我是一名坚持写博客四年的博主最好的种树是十年前其次是现在,今天继续对antdesigntable的分页封装进行讲解封装准备(多看官网)jsx风格的api<><Table<User>columns={columns}dataSource={data}/>/*使用JSX风格的API*/<Table<User>data......
  • echarts相关问题
    解决echarts下钻地图,在平移和缩放后,下钻到下一级时生成的地图不在容器中间,会跑到容器外面去。 myChart.setOption(option,true)问题:echart地图三级下钻地图在平移和缩放后,点击到省,由于中心点的偏移,省跑到容器以外的地方去了,导致新生成的地图看不见。解决方法:后来发现,是重新绘制......
  • Vscode提示"Option 'importsNotUsedAsValues' is deprecated and will stop functioni
    完整错误如下。点击错误信息会定位到tsconfig.json和tsconfig.node.json两个文件。Option'importsNotUsedAsValues'isdeprecatedandwillstopfunctioninginTypeScript5.5.SpecifycompilerOption'"ignoreDeprecations":"5.0"'tosilencethis......
  • ITSS认证运维服务各等级申报要求与流程
    一、ITSS的定义ITSS是信息技术服务标准,InformationTechnologyServiceStandards的缩写。是在工业和信息化部、国家标准化委的领导和支持下,由ITSS工作组研制的一套IT服务领域的标准库和一套提供IT服务的方法论。二、ITSS认证适用对象金融与保险机构、互联网企业、电信运营商、工......
  • echarts柱状图横(x)轴文字显示不全,一招解决
    柱状图底部X轴文字过长时,将会出现文字显示不全的问题,这是echarts为了美观默认的设置现在我们把文章倾斜旋转点角度即可全部显示  以下是代码 scale(){varchartDom=document.getElementById("twenty");varmyChart=this.$echarts.init(chartDom);......
  • 像工程师一样思考
    像工程师一样思考要想成为一名工程师,最重要的一点就是能够像工程师一样处理问题,面对未知或已知的事件能够像工程师一样思考。工程师和小白最大的区别是什么?知识吗?工程师也经常接触自身知识范围以外的任务。经验吗?工程师也经常需要解决从未见过的新问题。工具吗?先前的文章里已......
  • requests代理设置
    和urllib一样,多的介绍就不说了,直接上代码:importrequestsproxies={"http":"http://user:[email protected]:80","https":"http://10.10.1.10:1080",}requests.get("https://www.geekdigging.com/",proxies=proxies)......
  • TypeScript学习笔记-尚硅谷TypeScript教程(李立超老师TS新课)
    TypeScript学习笔记-尚硅谷TypeScript教程(李立超老师TS新课)https://blog.csdn.net/m0_46549017/article/details/124626987?ops_request_misc=&request_id=&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~all~koosearch~default-2-124626987-null-null.142^......
  • requests如何不使用系统代理
    1.指定域名不使用代理importosimportrequestsos.environ['NO_PROXY']='stackoverflow.com'response=requests.get('http://www.stackoverflow.com')2.设置代理为Noneimportrequestsproxies={"http":None,"......
  • 挑战程序设计竞赛---Ants
    Anarmyofantswalkonahorizontalpoleoflengthlcm,eachwithaconstantspeedof1cm/s.Whenawalkingantreachesanendofthepole,itimmediatellyfallsoffit.Whentwoantsmeettheyturnbackandstartwalkinginoppositedirections.Wekno......