2016-12-02 210 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