2016-12-02 125 views
0

我想为我的RN应用程序使用propTypes,但它似乎从未被强制执行。我的组件看起来是这样的:反应原生propTypes不起作用

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

export class Table extends Component { 
    render() { 
    return (<Text>...</Text>); 
    } 
} 

Table.propTypes = { 
    data: React.PropTypes.string, 
}; 

这没提醒我通过一个数字组件这样从另一个文件:

<Table data= { 2000 } /> 

所以我试图使propTypesTable因为静态属性我看到了有关ES6一些东西与propTypes工作这种方式:

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

export class Table extends Component { 
    static propTypes = { 
    data: React.PropTypes.string, 
    }; 

    render() { 
    return (<Text>...</Text>); 
    } 
} 

然后我尝试添加一个插件来我.babelrc FIL Ë

"plugins": [ 
    "transform-class-properties", 
] 

我试着制作道具需要

static propTypes = { 
    data: React.PropTypes.string.isRequired, 
}; 

我甚至已经试过,没有运气改变export class Table...export default class Table...。我已经尝试了上面列出的方法的每个组合都无济于事。我错过了什么?

+0

我不知道你是否知道这个,但你应该使用“等号”字符传递一个道具

。也许这就是问题。 –

+0

这是我的文章中的一个错误,我的实际代码使用'=' ,我已经在我的帖子中修复了它 – mithunm93

+1

React proptypes只能在开发环境中工作,所以请确认你没有在生产env –

回答

0

当我摆弄代码时,问题似乎自行消失。这可能是@asaf david建议的env问题,我不太确定。我试图回去改变东西,看看我能不能重现,但我不能:(。对不起,任何人在未来寻找这个。

+0

我得到同样的问题。你怎么解决这个问题?我没有看到警告或建议按Ctrl +空格在VSCode – MasterLuV

+0

就像我说的,它以某种方式固定本身,并尝试,因为我可能我不能重现这个问题,我很抱歉! – mithunm93

-1

这就是我如何使用:

export default class Link extends Component { 
    render() { 
     return (
       <Text >{this.props.text || 'Text'}</Text> 
     ) 
    } 
} 

Link.propTypes = { 
    text: React.PropTypes.string, 
} 

试试吧。也许可以帮助你。

+2

你正在做与OP类型完全相同的事情propTypes。如果它没有不同,它可以有所作为 –

+0

感谢您的建议,但@FelixKling是正确的,我试过这个确切的东西,它不起作用。 – mithunm93