我有一个touchableOpacity组件包含一些.png图片文件,我想更改其中一个图像源并将change事件绑定到onPress事件 . 我当前将源初始化为getInitialState()中的prop
source: require('someSource.png')
并实施
this.setState({source: require('someOtherSource.png')});
到onPress功能 . 不知何故,图像大小也相应改变,因为我添加了resizeMode:'contains'到图像样式 . 但是第二个图像文件没有加载到视图上 . 图像视图的部分:
<TouchableOpacity style={styles.newUserRegister}
onPress={this.doRegister}>
<Image style={styles.accNewUser} source={this.state.source}/>
</TouchableOpacity>
并在doRegister()函数中:
this.setState({source: require('someOtherSource.png')});
我有三种状态的图像源,所以我认为在doRegister中调用setState函数可能是一个更好的解决方案 .
如果是造型问题,这也是accNewUser的样式
accNewUser:{
marginTop:5,
resizeMode: 'contain',
alignItems: 'center',
},
1 回答
我为你的案子做了这个例子:https://rnplay.org/apps/jePI5Q
不幸的是RNPlay不允许添加资产,所以我不得不使用带有
uri
引用的外部图像 . 只需用require(<asset>)
替换这些引用,你就可以了 .该示例在
defaultSource
(向上箭头)和另一个(向下箭头)之间切换状态 .