问题记录:ios查看大图、点赞状态未更新

问题一、ios查看大图报错:Cannot redefine property:uri

import ImageViewer from 'react-native-image-zoom-viewer';

ios查看大图报错,出现这个问题是因为使用ImageViewer时,imageUrls传入的值为一个ObservableArray对象(可观察对象),换成普通数组就没有问题了,数组内部对象也是可观察的。

image.png

image2.png

方法一:数组内部对象也是可观察的,所以不能通过array.slice()或者Object.values(array)直接转换,而要用JSON.parse(JSON.stringify(array))完成转换。

先把这个ObservableArray对象使用JSON.stringify(array)变成字符串,在通过JSON.parse()方法将字符串变成数组,方可遍历循环,就可以完成ObservableArray对象到普通数组的转换了。

方法二:mobx提供了toJS方法,可以直接将ObservableArray对象转换为普通数组。

import { toJS } from 'mobx';

toJS(observableArrary)


问题二:动态详情页点赞之后,外面的数据列表点赞状态没有更新

// 有问题:

const { loading, error, data, fetchMore, refetch } = useQuery(GQL.dytjRecommendPostsQuery, { 

variables: { page: 1, count: 10 }, 

fetchPolicy: 'network-only',

});

// 修复:

const { loading, error, data, fetchMore, refetch } = useQuery(GQL.dytjRecommendPostsQuery, { 

variables: { page: 1, count: 10 }, 

fetchPolicy: 'no-cache',

});

查看Apollo文档,network-only和no-cache的区别就在于前者在查询服务器数据后会更新缓存的数据,后者在查询服务器后不会更新缓存。暂时这样解决了,但还是没有弄清楚真正的问题点。

学习清单

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

被以下专题收入,发现更多相似内容