2017-03-26 85 views
0

是否可以在React Native中使用defaultProps? 我試過定義defaultProps以下2種方式,並試圖訪問defaultPropReact Native中的defaultProps?

export default class Foo extends Component { 
    // 1. define defaultProps within Class 
    static defaultProps = { 
    someData: 'Hello', 
    } 

    constructor(props) { 
    super(props); 
    } 

    componentDidMount() { 
    console.log(this.props.someData); 
    } 

    render() { 
    return (
     <View> {this.props.someData} </View> 
    ) 
    } 
} 
    // 2. define defaultProps outside Class 
Foo.defaultProps = { someData: 'Hello' } 

回答

0

你要這個,當我得到空:

Foo.propTypes = { 
    someData: React.PropTypes.string 
}; 

這是說someData應該是一個字符串,但這不是必需的。

然後在你的render(),你可以這樣做:

render() { 
    return (
     <View> 
     {this.props.someData || Foo.defaultProps.someData} 
     </View> 
    ); 
    } 

這將使用this.props.someData如果它提供或Foo.defaultProps.someData如果不是。

我也認爲你需要將{this.props.someData || Foo.defaultProps.someData}換成Text元素(即<Text>{this.props.someData || Foo.defaultProps.someData}</Text>)。

2

我總是做這樣的,它工作得很好:

class SliderButton extends React.Component {}; 

SliderButton.propTypes = { 
    animateBackground: PropTypes.bool 
}; 

SliderButton.defaultProps = { 
    animateBackground: false 
}; 

export default SliderButton;