相关疑难解决方法(0)

如何使用TypeScript为无状态的,功能齐全的React组件指定(可选)默认道具?

我正在尝试在Typescript中创建一个带有可选props和defaultProps的无状态React组件(对于React Native项目).这对于vanilla JS来说是微不足道的,但是我对如何在TypeScript中实现它感到难过.

使用以下代码:

import React, { Component } from 'react';
import { Text } from 'react-native';

interface TestProps {
    title?: string,
    name?: string
}

const defaultProps: TestProps = {
    title: 'Mr',
    name: 'McGee'
}

const Test = (props = defaultProps) => (
    <Text>
        {props.title} {props.name}
    </Text>
);

export default Test;
Run Code Online (Sandbox Code Playgroud)

调用<Test title="Sir" name="Lancelot" />"Lancelot爵士"按预期呈现,但<Test />什么都没有,什么时候输出"Mr McGee".

任何帮助是极大的赞赏.

javascript typescript reactjs react-native

16
推荐指数
4
解决办法
2万
查看次数

如何在typescript中为无状态反应组件定义defaultProps?

我想defaultprops为我的纯功能组件定义,但我得到一个类型错误:

export interface PageProps extends React.HTMLProps<HTMLDivElement> {
    toolbarItem?: JSX.Element;
    title?: string;
}

const Page = (props: PageProps) => (
    <div className="row">
        <Paper className="col-xs-12 col-sm-offset-1 col-sm-10" zDepth={1}>
            <AppBar
                title={props.title}
                zDepth={0}
                style={{ backgroundColor: "white" }}
                showMenuIconButton={false}
                iconElementRight={props.toolbarItem}
            />
            {props.children}
        </Paper>
    </div>
);

Page.defaultProps = {
    toolbarItem: null,
};
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样写:

(Page as any).defaultProps = {
    toolbarItem: null,
};
Run Code Online (Sandbox Code Playgroud)

有没有更好的添加方式defaultProps

typescript reactjs

5
推荐指数
1
解决办法
1609
查看次数

标签 统计

reactjs ×2

typescript ×2

javascript ×1

react-native ×1