У меня есть компонент touchableOpacity, содержащий некоторый файл изображения .png, я хочу изменить один из источников изображения и связать событие изменения с событием onPress. Я тока инициализации источника в качестве опоры в getInitialState(), какКак обновить источник изображения с ответа на событие пресса
source: require('someSource.png')
и осуществлять
this.setState({source: require('someOtherSource.png')});
к функции onPress. Каким-то образом размер изображения изменяется соответствующим образом, потому что я добавил resizeMode: «содержать» в стиле изображения. Но второй файл изображения не загружался в представление. части, где вид изображения:
<TouchableOpacity style={styles.newUserRegister}
onPress={this.doRegister}>
<Image style={styles.accNewUser} source={this.state.source}/>
</TouchableOpacity>
и в функции doRegister():
this.setState({source: require('someOtherSource.png')});
У меня есть три состояния источника изображения, так что я думал, вызвать функцию SetState в doRegister может быть лучшее решение.
Кроме того, в случае, если это проблема с моделированием, это стили для accNewUser
accNewUser:{
marginTop:5,
resizeMode: 'contain',
alignItems: 'center',
},
Не могли бы вы предоставить еще какой-нибудь контекст? – klaasman
@ Klaasman Я добавил дополнительные сведения –
- это метод doRegister, связанный с областью действия компонента? В противном случае метод вызывается с неправильной областью действия, которая не предоставляет 'setState' компонента. Что-то еще, что всплыло у меня в голове: попробуйте импортировать зависимости вне вашего компонента, например. 'const someOtherSourceImg = require ('someOtherSource.png')' и использовать его как 'this.setState ({source: someOtherSourceImg}); ' – klaasman