Подтвердить что ты не робот

Неисправность, требующая модуля изображения в React Native

Просто начинайте с React-Native, и у меня возникают проблемы с статическим изображением.

Вот самый базовый код, который у меня есть до сих пор:

'use strict';

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  Image,
  View,
} = React;

var buzz = React.createClass({
  render: function() {
    return (
      <View style={styles.container}>
        <Image source={require('image!bg')}  style={styles.bg}>
          <Text style={styles.welcome}>
            Welcome to Buzz! iOS interface to
          </Text>
          <Text style={styles.welcomeHeader}>Charityware</Text>
        </Image>
      </View>
    );
  }
});

var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: 'transparent'
  },
  welcomeHeader: {
    fontWeight: '600',
    fontFamily: 'Helvetica',
    color: '#fff',
    fontSize: 50,
    alignSelf: 'center'
  },
  bg: {
    width: 400,
    height: 300,
    alignSelf: 'auto',

  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
  },
});

AppRegistry.registerComponent('buzz', () => buzz);

Основная область проблем:

    <Image source={require('image!bg')}  style={styles.bg}>
      <Text style={styles.welcome}>
        Welcome to Buzz! iOS interface to
      </Text>
      <Text style={styles.welcomeHeader}>Charityware</Text>
    </Image>

При упаковке моего приложения и его запуске я получаю ошибку рендеринга: error image

Я понимаю, что вам нужно добавить изображения в xcode в качестве изображения, установленного для вызова require, чтобы найти изображение и добавили изображение, установленное с этой целью: bg image

... Но безрезультатно. У кого-нибудь есть мысли? Я прочитал документы и, кажется, делаю это в установленном порядке. Спасибо!

4b9b3361

Ответ 1

Начиная с версии React Native 0.14 обработка изображений была нормализована для iOS и Android и теперь отличается. Я не мог найти никакой документации, кроме этой очень четкой фиксации в Github: Документ новой системы активов.

Есть только скриншот предлагаемой документации: введите описание изображения здесь

Обновление: Теперь есть ссылка на настоящую документацию: https://facebook.github.io/react-native/docs/images.html

Ответ 2

У меня была схожая проблема, затем переименовали файлы изображений в файловой системе в каталогах xcode project Images.xcassets с суффиксами и заглавными буквами в соответствии с загружаемым изображением.

Например, если source={require('image!Villagers')} потребовались файлы изображений, названные точно как Villagers.png, [email protected] и [email protected]. Если "filename" "@3x" не было, изображение не будет найдено.

Ответ 3

Какую версию React Native вы используете? Проблема с пакетом, связанным с этим, была решена.

Если это произойдет, вы можете либо обновить, либо запустить сервер dev с помощью:

node_modules/react-native/packager/packager.sh --assetRoots path/to/Images.xcassets

https://github.com/facebook/react-native/issues/282

Ответ 4

Этот вопрос уже был дан ответ, но если вы используете React Native на Android, у вас может возникнуть такая же проблема. Для меня решение использовало source={{ uri: "google", isStatic: true }} вместо source={required('./bg.png')}.

Не забудьте добавить свои изображения в папку src/main/res/drawable.

Ответ 5

ПРИМЕЧАНИЕ. Создание приложения требуется для новых ресурсов Каждый раз, когда вы добавляете новый ресурс в Images.xcassets, вам нужно будет снова создать приложение через XCode, прежде чем вы сможете его использовать - перезагрузка изнутри > симулятора недостаточно. (из React Native docs https://facebook.github.io/react-native/docs/image.html#content)

Также обязательно перезапустите упаковщик. Это решило проблему для меня.

Ответ 6

Вы можете легко передать изображения, сделав файл package.json в своей папке с ресурсами.

Структура папок проекта

package.json

И вы можете называть его этим кодом.

<Image 
   source={require('assets/img/avatar.png')} 
   style={styles.itemAvatar}
   resizeMode={'cover'}
/>

Ответ 7

Для статических изображений вам необходимо указать путь, например:

<Image source={require('./images/back.png')}  
style= {{width:25, height:25, marginLeft:12, padding:12}}/>

Это сработало для меня, для изображения, хранящегося в папке с изображениями каталога проекта: