我的服务器上有一张picture.jpg图片。当我上传一张新图片时,将data.jpg替换为数据而不是名称(换句话说,旧的profile.jpg将被新的profile.jpg替换,但新的profile.jpg也称为profile.jpg)。在我的承诺返回后,我调用forceUpdate,但除非我更改图像的实际url(src),否则这不会做任何事情。请参阅我的代码,其中我尝试连接promises,以便react会识别url正在更改(从正确的url更改为“empty”,再次更改为正确的url):
fetch('http://localhost:3000/change_pet_pic/?petID='+this.props.pet.id+'&userID='+this.props.pet.ownerID, { method: 'POST', body: form })
.then(function(res) {
return res.json();
}).then(function(json) {
var pet = $this.props.pet;
pet.petPicture = "empty";
$this.props.pet=pet;
$this.forceUpdate();
return json.picture_url;
}).then(function(url){
var pet = $this.props.pet;
pet.petPicture = url;
$this.props.pet=pet;
$this.forceUpdate();
})
感谢您的提示!
答案 0 :(得分:1)
您的ReactJS代码似乎没有问题,而应该是浏览器缓存,这会导致问题,因为图像网址看起来一直都会返回旧图像。
您可以采取的措施是,每当图像发生变化时,您都可以使用不同的查询字符串访问图像。
因此,您第一次可以使用profile.jpg?v=1
访问此内容,第二次,您可以使用profile.jpg?v=2
类似的内容访问它。