Я не могу использовать Platform.select () в выражениях javascript в JSX (фигурные скобки) успешно. Приложение по-прежнему компилируется, но компонент отсутствует . Если я напрямую вызываю функцию выбора, она работает, как показано в // Works. Это происходит из-за того, что «ключ» Platform.OS не передается, когда он находится внутри выражений JSX? Документы для модуля платформы довольно ограничен?

import React from 'react';
import {View, Platform, Text} from 'react-native';

// Does not work:
const PlatformText = () => {
  return (
    <View>
      {Platform.select({
        ios: () => <Text>IOS</Text>,
        android: () => <Text>Android</Text>,
      })}
    </View>
  );
};

// Works:
const PlatformText = Platform.select({
  ios: () => <Text>IOS</Text>,
  android: () => <Text>Android</Text>,
});

export default PlatformText;
1
Ben Butterworth 17 Дек 2019 в 16:52

2 ответа

Лучший ответ

Это происходит потому, что вы возвращаете функцию. Никто не звонит этот обратный вызов. Если вы хотите использовать этот компонент с Platform.select, просто верните нужный компонент:

const PlatformText = () => {
  return (
    <View>
      {Platform.select({
        ios: <Text>IOS</Text>,
        android: <Text>Android</Text>,
      })}
    </View>
  );
};
4
Auticcat 17 Дек 2019 в 14:13

В разделе « не работает » вы возвращаете функцию , а в разделе « работает » вы возвращаете результат Platform-Select прямо.

Поэтому убедитесь, что вы правильно вызываете свой PlatformText, чтобы получить Результат.

1
suther 17 Дек 2019 в 14:15