我可以在 React Native 中的 Picker 项的标签中使用多个或嵌套元素吗?

Posted

技术标签:

【中文标题】我可以在 React Native 中的 Picker 项的标签中使用多个或嵌套元素吗?【英文标题】:Can I use multiple or nested elements in the Label of a Picker Item in React Native? 【发布时间】:2017-09-15 12:04:37 【问题描述】:

我正在使用带有 NativeBase 的 React Native,并且希望我的 Picker 的标签比一个纯文本字符串更复杂。

但是是否甚至可以将元素作为标签传递,比如将多个子元素包裹在一个***元素中?

还是 Pickers 只支持纯文本作为标签?


应 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;
  );

【问题讨论】:

我认为您可以将任何组件作为子组件。你为什么不试试看? 您能否添加您尝试过的代码,以便我或其他人可以提供更好的帮助。 尝试将Text 组件作为Picker.Item 的子组件返回,这可能会起作用 @bennygenel:使它成为 Picker.Item 的子项不起作用,但将其分配给标签字段确实有效!我会把它作为答案发布。 太好了!我打算创建一个虚拟项目来测试它,但我想我现在不需要。 【参考方案1】:

是的!有可能,对于 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;
  );

【讨论】:

以上是关于我可以在 React Native 中的 Picker 项的标签中使用多个或嵌套元素吗?的主要内容,如果未能解决你的问题,请参考以下文章

react-native-sqlite-storage 中的 React Native Async Await

有没有办法可以将 Text 组件的全部内容包装在 react-native 中的父视图中?

是否可以从 React-Native 中的图像中获取二进制数据?

Jest 和 React Native 中的模拟平台检测

React Native 中的 iPad 数字键盘

我可以在 React Native 中的 Picker 项的标签中使用多个或嵌套元素吗?