react-native - 如何根据情况更改图像源
问题描述
当组件第一次呈现this.props.navigation.getParam('Image')
未定义时,因此<Image>
需要 this.state.Image
,而当this.props.navigation.getParam('Image')
未定义时,我将其作为 Image。但是当我长按按钮时,我想将图像默认值设置为require('../Images/add2.png')
. 我不能这样做。任何帮助
state= {
Images : require('../Images/add2.png'),
}
render() {
return (
<View>
<TouchableOpacity onPressIn={() => this.setState({ buttonPress: 'short' })}
onLongPress={() => this.setState({ buttonPress: 'long' })}
onPressOut={() => {
const { buttonPress } = this.state;
if (buttonPress === 'short')
{
}
else if (buttonPress === 'long')
{
this.setState({ ButtonImage: require('../Images/add2.png') });
}
this.setState({ buttonPress: 'none' });
}}>
---------> <Image source={ this.props.navigation.getParam('Image') !== undefined ? { uri: this.props.navigation.getParam('Image') } : this.state.Images } style={{ height: 30, width: 30 }} />
</TouchableOpacity>
</View>
)
}
解决方案
你可以有 2<Image>
个用于 'require' 一个用于 uri。
return (
<View>
<TouchableOpacity
onPressIn={() => this.setState({ buttonPress: 'short' })}
onLongPress={() => this.setState({ buttonPress: 'long' })}
onPressOut={() => {
const { buttonPress } = this.state;
if (buttonPress === 'short'){
}
else if (buttonPress === 'long'){
this.setState({ ButtonImage: require('../Images/add2.png') });
}
this.setState({ buttonPress: 'none' });
}}>
{this.state.localImage?<Image source={ require('../Images/add2.png') } style={{ height: 30, width: 30 }} />
:
<Image source={ uri:this.state.image } style={{ height: 30, width: 30 }} />
}
</TouchableOpacity>
</View>
)
保存您要显示的本地文件('../Images/add2.png')设置this.state.localImage
为true并将网址保存在this.state.image
推荐阅读
- javascript - 如何在客户端隐藏服务器端呈现的 HTML 代码
- c - 在 C 中一次显示 8 个结果的搜索功能
- angular - 在新生成的元素上重置惊人的动画延迟
- angular - 我在 Angular Routing 中哪里犯了错误?
- c++ - 在表示图的元组向量中找到最小加权路径
- sql - 如何使用每个 TILE 的最大值和该 TILE 中的项目数创建结果集
- r - 如何解决:“open.connection(x, "rb") 中的错误:已达到超时:"?
- azure-devops-rest-api - 将 ACL 描述符转换为安全组名称
- python - 为什么 time.sleep() 在循环内不起作用
- javascript - 如何为多个子域上使用的项目设置数据库以及最好使用哪种技术?