2017-03-10 80 views
0

因此对于<TextInput>对于ios,您需要设置高度。然而,对于android你并不需要。所以我想知道如何才能设置一个高度只有当操作系统匹配ios。我了解平台,但当我尝试应用某些逻辑时,我会遇到错误。这是我的尝试:React-native - 有条件地设置高度

<TextInput 
     onChangeText={(input) => this.setState({user: input})} 
     maxLength={10} 
     placeholder="Enter a name" 
     {(Platform.OS === 'ios') ? "height={20}" : ""} 
     style={{ width: 150, textAlign: "center"}} 
    /> 

回答

4

其实我认为更好的事情是:

const style = { 
    width: 150, 
    textAlign: "center", 
    ...Platform.select({ios: {height: 20}}) 
} 
<TextInput 
    onChangeText={(input) => this.setState({user: input})} 
    maxLength={10} 
    placeholder="Enter a name" 
    style={style} /> 

这样,你不重复的样式的休息,你避免任何丑陋的条件在你的代码中,所以它更具可读性。

可以在react-native docs

+0

了解Plaform.select是啊,这是更多的我一直在寻找的东西,这东西就不会逼我重复的代码,但在必要时将其插入。谢谢。 “......”是一个传播运算符吗? –

+0

是的。 ...是一个扩展运算符,因此对于iOS高度被扩展到样式对象,并且对于android,当您尝试传播未定义时,操作符将被跳过。 – atlanteh