2017-09-15 152 views
0

我在NativeBase中使用了React Native,并希望使Picker的标签比仅仅一个纯文本字符串更复杂。我可以在React Native的Picker项目标签中使用多个或嵌套的元素吗?

但是,甚至有可能将元素作为标签传递,比如多个子元素包装在单个顶级元素中?

还是拣货员只支持纯文本作为标签?


按照要求通过bennygenel,这里是一个什么样我试过版本:

export default class ThingPicker extends React.Component { 

    render() { 
    const { 
     initialThing, 
     things, 
     onThingChanged, 
    } = this.props; 

    const orderedThings = things.sort(); 

    return (
     <Picker 
     selectedValue={initialThing} 
     onValueChange={onThingChanged}> 
     {buildThingItems(orderedThings)} 
     </Picker> 
    ); 
    } 
} 

function buildThingItems(orderedThings) { 
    let items = orderedThings.map(th => { 
    const it = th === "BMD" ? (<Text key={th} label={"foo"} value={"bar"}}>Hello</Text>) 
    : (<Picker.Item key={th} label={th} value={th} />); 

    return it; 
    }); 
} 
+0

您可以给任何组件作为我认为的孩子。你为什么不试试看? – bennygenel

+0

@bennygenel:我不确定语法是什么。刚开始打开标签?内部引号?括号内,花括号,双花括号? ( - :我想我会去尝试一堆组合...... – hippietrail

+0

如果你选中[Picker的文档](http://docs.nativebase.io/Components.html#picker-def-headref),你可以看到它有多个子组件,你可以创建你自己的Item组件,并添加它,而不是默认的自带的Nativebase – bennygenel

回答

0

是的!有可能,对于React/JSX代码来说,它可能看起来不太“正确”。只需创建您需要的元素,并将它们分配到标签字段:

function buildThingItems(orderedThings) { 
    let items = orderedThings.map(th => { 
    const it = (<Picker.Item 
     key={th} 
     label={currency === "BMD" ? (<Text>Hello</Text>) : th} 
     value={th} />); 

    return it; 
    }); 
} 
相关问题